1

当我从我的选择时,我想突出显示该行,ListView但我无法让它工作。谁能看看我所拥有的并告诉我我做错了什么?另一个问题是如何在我的 ViewModel 中拥有一个属性并Background根据 bool 值设置颜色,如何实现?

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Green" />
            </Trigger>

            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>
4

3 回答 3

3

这里的问题是用于ListView自动添加画笔类型的“选定突出显示”的项目模板SystemColors.HighlightBrushKey- “真正的解决方案”是覆盖项目模板定义,但是你可以在这里获得你想要的东西的一种方法是这样的:

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/>
        </Style.Resources>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Yellow" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListView.ItemContainerStyle>
于 2012-12-31T19:09:39.890 回答
0

您可以使用名为 的接口将 Bool 值绑定到颜色画笔IValueConverter

这是一篇相关文章:IValueConverter 的最佳实践是什么?

于 2012-12-31T18:53:17.873 回答
0
            <ListView  Name="listBox1" ItemsSource="{Binding Path=SimpleList}"
                      HorizontalAlignment="Left" VerticalAlignment="Top" Background="Olive">
                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/>
                        <EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/>
                        <Style.Resources>
                            <!-- Background of selected item when focussed -->
                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                                Color="Green"/>
                            <!-- Background of selected item when not focussed -->
                            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                                Color="Yellow" />
                        </Style.Resources>
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <!--<Setter Property="FontWeight" Value="Bold" />-->
                                <Setter Property="Background" Value="Orange" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ListView.ItemContainerStyle>
            </ListView>
于 2012-12-31T21:14:18.077 回答