【问题标题】:Dynamic highlight color in ListViewListView 中的动态高亮颜色
【发布时间】:2011-11-22 12:28:48
【问题描述】:

如何使背景高亮颜色依赖于 ListViewItem 的某些属性?

【问题讨论】:

    标签: wpf listview dynamic highlight


    【解决方案1】:

    编辑:

    要更改选定的背景,您必须覆盖 ListViewItem 的模板。

    看到这个...http://msdn.microsoft.com/en-us/library/ms788717(v=vs.90).aspx

    在模板中将{StaticResource SelectedBackgroundBrush} 替换为您喜欢的背景画笔。


    要根据控件模板不依赖的任何其他属性更改背景,您可以使用触发器...

     <ListView ...>
      <ListView.Resources>
       <Style TargetType="{x:Type ListViewItem}">
         <Style.Triggers>
           <Trigger Property="SomeListViewItemProperty" Value="Value1">
             <Setter Property="Background" Value="Red" />
           </Trigger>
           <Trigger Property="SomeListViewItemProperty" Value="Value2">
             <Setter Property="Background" Value="Yellow" />
           </Trigger>
         </Style.Triggers>
       </Style>
      <ListView.Resources>
     </ListView>
    

    我希望这能回答你的问题。

    【讨论】:

    • 谢谢,但这不是我寻找的答案:(。我知道如何为列表项设置背景。但是当我选择一个项目时,它的背景仍然变成蓝色(默认系统突出显示画笔颜色)。如果列表中只有一项,我什至看不到它的背景颜色,因为我无法更改选择。
    【解决方案2】:

    这是人们经常询问的问题。实际上,由于某些原因,当在 ListView 或 ListBox 中选择一个项目时,背景颜色并不是改变的那个。这有点棘手。事实上,您需要覆盖项目模板所绑定的静态颜色资源的值。因此,要更改项目的突出显示颜色,您必须这样做:

    <ListView>
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Style.Resources>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Orange"/>
                </Style.Resources>
            </Style>
        </ListView.ItemContainerStyle>
    </List>
    

    这里有一个更成熟的解释:Trigger for ListBoxItem

    【讨论】:

      猜你喜欢
      • 2011-08-30
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多