4

私のWPFアプリケーションでは、何かがドロップされようとしているときはいつでもListViewItemを強調表示する必要があります。ListViewItemのOnDragEnter、OnDragOver、OnDragLeaveなどをオーバーライドして、スタイルを適用します(背景の変更など)。正常に動作しています。しかし、リストビューアイテムに何かをドロップした後、リストビューアイテムをクリックすると、選択とマウスオーバーの効果が正しく機能しません。これを解決するにはどうすればよいですか?

public class CustomListViewItem : ListViewItem
{
    protected override void OnDragOver(System.Windows.DragEventArgs e)
    {
        this.Background = Brushes.Green;
        base.OnDragOver(e);
    }

    protected override void OnDragEnter(System.Windows.DragEventArgs e)
    {
        this.Background = Brushes.Green;
        base.OnDragEnter(e);
    }

    protected override void OnDragLeave(System.Windows.DragEventArgs e)
    {
        if (!this.IsSelected)
        {
            this.Background = Brushes.Transparent;
            this.BorderBrush = Brushes.Transparent;
        }
        base.OnDragLeave(e);
    }
}
4

1 に答える 1

4

DragDropを実行した後、ローカル値はスタイルごとの選択およびマウスオーバー効果よりも優先されます(依存関係プロパティ設定の優先順位リスト を参照)。

DependencyObject.ClearValueメソッドを試してください:

protected override void OnDragLeave(System.Windows.DragEventArgs e)
{
    if (!this.IsSelected)
    {
        this.ClearValue(BackgroundProperty);
        this.ClearValue(BorderBrushProperty);
    }
    base.OnDragLeave(e);
}
于 2012-05-10T18:48:05.493 に答える