C# 根据属性自定义Listview选定项目和悬停项目背景

C# 根据属性自定义Listview选定项目和悬停项目背景,c#,.net,wpf,C#,.net,Wpf,我正在使用listview显示可观察对象列表的状态,这些对象根据对象的属性自定义背景。 我设法用触发器自定义listview项目的背景,但一旦我选择了一个项目或在其中移动光标,它就消失了。 我想做的是在我选择一个项目后改变颜色,但它也应该依赖于属性值,就像背景与触发器一样。 以下是我目前的状态: <Grid> <ListView Name="lvDataBinding" ItemsSource="{Binding List}" HorizontalAli

我正在使用listview显示可观察对象列表的状态,这些对象根据对象的属性自定义背景。 我设法用触发器自定义listview项目的背景,但一旦我选择了一个项目或在其中移动光标,它就消失了。 我想做的是在我选择一个项目后改变颜色,但它也应该依赖于属性值,就像背景与触发器一样。 以下是我目前的状态:

    <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等)?除了组合之外,您需要了解,对于选定/悬停的项目,您的背景设置基本上将被忽略,因为控件模板设计用于在这种情况下设置不同的颜色。一旦你有了一个解决方案,你可以指定一些背景,即使在被选中的时候也可以工作,你可以开始担心不同的组合。