编辑:UWP App与WPF应用程序不是100%相同。
我有一个带有ListView的uwp应用程序。在ListView中,我使用带有测试类的DataTemplate。它显示测试和点的名称。
我想要完成的是触发器!检查如果Points大于:50,然后将ListViewItem的背景颜色更改为红色。
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Tests">
<Grid>
<TextBlock Text="{x:Bind Name}" />
<TextBlock Text="{x:Bind Points}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
答案 0 :(得分:8)
我发现很难让我的listview项目显示替代颜色。最后,我设法通过为ListView事件处理程序ContainerContentChanging指定一个方法。
在列表视图中填充每个项目时,将调用分配给此事件的方法。这提供了更改列表视图项的前景,背景,文本等的功能
private void listViewContentChange(ListViewBase sender, ContainerContentChangingEventArgs args) {
//this method is called for each item while it gets loaded in the listview. Here we are changing background color and text color
if (args.ItemIndex == 0) {
//colour for header
args.ItemContainer.Background = (SolidColorBrush) Application.Current.Resources["grey"];
} else {
if (args.ItemIndex % 2 == 0) {
//lighter colour
args.ItemContainer.Background = (SolidColorBrush) Application.Current.Resources["lightblue"];
} else {
//Dark colour
args.ItemContainer.Background = (SolidColorBrush) Application.Current.Resources["blue"];
}
}
答案 1 :(得分:4)
您可以通过多种方式执行此操作:
ItemContrainerStyleSelector
:the sample DataTemplateSelector
:the sample Converter
:the sample描述了bool的可见性,但您可以按照自己的意愿进行更改。答案 2 :(得分:0)
您可以使用与此类似的内容:https://stackoverflow.com/a/27621234/3869250
在那个例子中,海报只是检查它是偶数还是奇数,以创建交替的颜色。
if (index % 2 == 0)
{
...
}
在您的情况下,您可以执行以下操作:
if(item.Points > 50)
{
return this.RedBackgroundStyle;
}
答案 3 :(得分:0)