WPF 使用 ItemsPanelTemplate 为 ListBox 的选定项设置样式
WPF Style Selected Items of ListBox Using an ItemsPanelTemplate
如何设置此列表框中所选项目的样式?
<ListBox x:Name="AssetTypeListBox" SelectionMode="Multiple">
<ListBox.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid Columns="6"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
我试过了
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#F15025"/>
和
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#F15025"/>
但它们似乎并没有像我预期的那样影响所选项目。谢谢
如果您只想更改选区的颜色,那么最简单的方法是将 solidcolorbrush 设置为列表框上的资源:
<ListBox x:Name="AssetTypeListBox" SelectionMode="Multiple">
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#F15025"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#F15025"/>
</ListBox.Resources>
<ListBox.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid Columns="6"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
如果您想要自定义列表框中某个项目的选择的样式,例如更改选择颜色或完全重新设计所选项目的外观,您需要查看 ItemContainerStyle 属性.
ItemsPanelTemplate 对此没有影响 - 它只是设置应该布局和显示项目的 ItemsControl 类型 - 例如 StackPanel 或 UniformGrid。
ListBox 的基本层次结构(有点保留)是:
- 列表框
- ItemsPanelTemplate(默认为 StackPanel)
- ItemsContainerStyle(选择突出显示在这里)
- ItemTemplate(您在这里定义列表项的内容)
此处介绍了 ItemTemplates 和 ItemsContainerStyle 之间的区别:
What's the difference between ItemTemplate and ItemContainerStyle in a WPF ListBox?
如何设置此列表框中所选项目的样式?
<ListBox x:Name="AssetTypeListBox" SelectionMode="Multiple">
<ListBox.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid Columns="6"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
我试过了
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#F15025"/>
和
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#F15025"/>
但它们似乎并没有像我预期的那样影响所选项目。谢谢
如果您只想更改选区的颜色,那么最简单的方法是将 solidcolorbrush 设置为列表框上的资源:
<ListBox x:Name="AssetTypeListBox" SelectionMode="Multiple">
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#F15025"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#F15025"/>
</ListBox.Resources>
<ListBox.ItemsPanel >
<ItemsPanelTemplate >
<UniformGrid Columns="6"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
如果您想要自定义列表框中某个项目的选择的样式,例如更改选择颜色或完全重新设计所选项目的外观,您需要查看 ItemContainerStyle 属性.
ItemsPanelTemplate 对此没有影响 - 它只是设置应该布局和显示项目的 ItemsControl 类型 - 例如 StackPanel 或 UniformGrid。
ListBox 的基本层次结构(有点保留)是:
- 列表框
- ItemsPanelTemplate(默认为 StackPanel)
- ItemsContainerStyle(选择突出显示在这里)
- ItemTemplate(您在这里定义列表项的内容)
- ItemsContainerStyle(选择突出显示在这里)
- ItemsPanelTemplate(默认为 StackPanel)
此处介绍了 ItemTemplates 和 ItemsContainerStyle 之间的区别: What's the difference between ItemTemplate and ItemContainerStyle in a WPF ListBox?