我在用Win7编写的WPF中设置了列表框的样式 所以我的风格是
<ListBox>
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="#000000" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="#000000" />
</ListBox.Resources>
</ListBox>
此代码在聚焦和散焦状态下对列表框项目进行相同的选择。当我在 Windows 8 下运行我的程序时,这种外观不起作用。 我的代码哪里有错误?
最佳答案
ListBoxItem
在 Windows-8 中似乎有
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Property="Selector.IsSelectionActive" Value="false"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</MultiTrigger>
因为它是默认样式中的非事件选择触发器,然后使用 SystemColors.ControlBrushKey
和 SystemColors.ControlTextBrushKey
因此您可能也想在资源中覆盖它们,
也许是这样的:
<ListBox>
<ListBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="#000000" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="#000000" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#3399FF" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="#000000" />
</ListBox.Resources>
</ListBox>
或者自己创建一个Style
(基于默认模板)并直接在这个新的Style
上设置颜色,然后保证适用于任何版本操作系统的,您不必不断回溯并检查默认值是否发生了更改。
关于c# - windows 8 列表框选择颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013863/