C# 根据属性自定义Listview选定项目和悬停项目背景
我正在使用listview显示可观察对象列表的状态,这些对象根据对象的属性自定义背景。 我设法用触发器自定义listview项目的背景,但一旦我选择了一个项目或在其中移动光标,它就消失了。 我想做的是在我选择一个项目后改变颜色,但它也应该依赖于属性值,就像背景与触发器一样。 以下是我目前的状态:C# 根据属性自定义Listview选定项目和悬停项目背景,c#,.net,wpf,C#,.net,Wpf,我正在使用listview显示可观察对象列表的状态,这些对象根据对象的属性自定义背景。 我设法用触发器自定义listview项目的背景,但一旦我选择了一个项目或在其中移动光标,它就消失了。 我想做的是在我选择一个项目后改变颜色,但它也应该依赖于属性值,就像背景与触发器一样。 以下是我目前的状态: <Grid> <ListView Name="lvDataBinding" ItemsSource="{Binding List}" HorizontalAli
<Grid>
<ListView Name="lvDataBinding" ItemsSource="{Binding List}" HorizontalAlignment="Stretch">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Stato}" Value="Caricato">
<Setter Property="Background" Value="#FF82CA9D" />
</DataTrigger>
<DataTrigger Binding="{Binding Stato}" Value="Errore">
<Setter Property="Background" Value="#FFF7977A" />
</DataTrigger>
<DataTrigger Binding="{Binding Stato}" Value="InCoda">
<Setter Property="Background" Value="#FFF79A" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch" Width="Auto">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<WrapPanel Grid.Column="0" Grid.Row="0" Margin="3">
<TextBlock Text="Nome: " />
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</WrapPanel>
<WrapPanel Grid.Column="1" Grid.Row="0" Margin="3">
<TextBlock Text="ID tessera: " />
<TextBlock Text="{Binding ID}" FontWeight="Bold" />
</WrapPanel>
<WrapPanel Grid.Column="2" Grid.Row="0" Margin="3" HorizontalAlignment="Right">
<TextBlock Text="Stato: " />
<TextBlock Text="{Binding StatoString}" FontWeight="Bold" />
</WrapPanel>
<WrapPanel Grid.Column="0" Grid.Row="1" Margin="3">
<TextBlock Text="Data: " />
<TextBlock Text="{Binding Time}" FontWeight="Bold" />
</WrapPanel>
<WrapPanel Grid.Column="1" Grid.Row="1" Margin="3">
<TextBlock Text="N. Documento: " />
<TextBlock Text="{Binding Number}" FontWeight="Bold" />
</WrapPanel>
<WrapPanel Grid.Column="2" Grid.Row="1" HorizontalAlignment="Right" Margin="3">
<TextBlock Text="Cassa: " />
<TextBlock Text="{Binding Position}" FontWeight="Bold" />
</WrapPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
可能相关:我发现了两个类似的链接,但都使用预定义的背景,而且从未根据属性值进行过自定义。您应该看到链接接受答案的更新部分。我认为如果不重新定义模板,您将无法逃脱。因此,我必须定义每个可能的组合(选定值1、非选定值1、选定值2、非选定值2等)?除了组合之外,您需要了解,对于选定/悬停的项目,您的背景设置基本上将被忽略,因为控件模板设计用于在这种情况下设置不同的颜色。一旦您有了一个解决方案,您可以指定一些即使在选中时也能工作的背景,你可以开始担心不同的组合。潜在的关联:我发现了两个这样的链接,但都使用预定义的背景,从来没有根据属性值自定义的内容。你应该看到链接接受答案的更新部分。我认为如果不重新定义模板,您将无法逃脱。因此,我必须定义每个可能的组合(选定值1、非选定值1、选定值2、非选定值2等)?除了组合之外,您需要了解,对于选定/悬停的项目,您的背景设置基本上将被忽略,因为控件模板设计用于在这种情况下设置不同的颜色。一旦你有了一个解决方案,你可以指定一些背景,即使在被选中的时候也可以工作,你可以开始担心不同的组合。