wpf 在拖放时突出显示列表视图项

本文关键字:显示 列表 视图 拖放 wpf | 更新日期: 2023-09-27 18:33:43

在我的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);
    }
}

wpf 在拖放时突出显示列表视图项

执行拖放

后,按样式划分,本地值优先于选择和鼠标悬停效果(请参阅依赖项属性设置优先级列表)).

尝试 DependencyObject.ClearValue 方法:

protected override void OnDragLeave(System.Windows.DragEventArgs e)
{
    if (!this.IsSelected)
    {
        this.ClearValue(BackgroundProperty);
        this.ClearValue(BorderBrushProperty);
    }
    base.OnDragLeave(e);
}