首页 > 解决方案 > 如何为ListView UWP中的每一行设置颜色差异指针

问题描述

我试图制作一个具有某些行的 ListView 将与其他行有不同的 PointerOver 颜色(取决于此行上的数据绑定)。目前,当指针移动到任何行时,我尝试更改 ListViewItemBackgroundSelected

private void lvResult_PointerEntered(object sender, PointerRoutedEventArgs e)
        {
            lvResult.SelectedItem = ((FrameworkElement)sender).DataContext;
            Debug.WriteLine("Hover Item :" + lvResult.SelectedIndex);
            if (lvResult.SelectedIndex % 2 == 0){ //just put sample condition here
            lvResult.Resources["ListViewItemBackgroundPointerOver"] = new SolidColorBrush(Color.FromArgb(150, 250, 12, 170));
            lvResult.Resources["ListViewItemBackgroundSelected"] = new SolidColorBrush(Color.FromArgb(150, 250, 12, 170)); 
       lvResult.Resources["ListViewItemBackgroundSelectedPointerOver"] = new SolidColorBrush(Color.FromArgb(150, 250, 12, 170));
            }else{
            lvResult.Resources["ListViewItemBackgroundPointerOver"] = new SolidColorBrush(Color.FromArgb(150, 255, 0, 255));
            lvResult.Resources["ListViewItemBackgroundSelected"] = new SolidColorBrush(Color.FromArgb(150, 255, 0, 255));   
     lvResult.Resources["ListViewItemBackgroundSelectedPointerOver"] = new SolidColorBrush(Color.FromArgb(150, 255, 0, 255));
            }
           
        }

但看起来它不起作用。那你能给我一个帮助吗?

标签: listviewuwp

解决方案


即使它可能会起作用,我不确定这是一个好主意。

如果你想根据某些条件用不同的颜色突出显示某些行项,最好有一个数据模板来实现它。

例如,在您的列表视图中,您可能有这样的内容:

<ListView
    SelectionMode="Single"
    ItemTemplate="{StaticResource ListViewTemplate}"/>

在您的数据模板中,您可以使用不同的选项来应用不同的悬停颜色,例如触发器、转换器(绑定到模型属性)或模板选择器


推荐阅读