listview - 如何为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));
}
}
但看起来它不起作用。那你能给我一个帮助吗?
解决方案
即使它可能会起作用,我不确定这是一个好主意。
如果你想根据某些条件用不同的颜色突出显示某些行项,最好有一个数据模板来实现它。
例如,在您的列表视图中,您可能有这样的内容:
<ListView
SelectionMode="Single"
ItemTemplate="{StaticResource ListViewTemplate}"/>
在您的数据模板中,您可以使用不同的选项来应用不同的悬停颜色,例如触发器、转换器(绑定到模型属性)或模板选择器
推荐阅读
- python - ValueError:使用序列设置数组元素。- 特征工程
- ajax - 通过 AJAX 将视图返回为 HTML 时未定义的变量
- sql - 查询特定列的数据库的所有表
- c++ - 我的图像没有在 open cv 中打开,尝试了很多解决方案但仍然是同样的问题
- javascript - 对象数组上的 Match()
- androidx - 从旧的复杂 android 项目迁移到新的 SDK 29 androidx 项目时显示导入和依赖错误
- javascript - 我将如何在 javascript 中复制 python rfind 和字符串乘法?
- android - 图像视图中的图标颜色设置为灰色且无法更改颜色 Android
- python - Pygame- 使用 pygame.event.set_blocked() 禁用键会导致窗口崩溃并返回错误
- java - 有界通配符与方法参数之外的行为相反