我有一个非常简单的WPF ListBox,SelectionMode设置为Multiple.
<ListBox SelectionMode="Multiple" />
Run Code Online (Sandbox Code Playgroud)
当ListBox失去焦点时,由于选择颜色从蓝色变为浅灰色,因此很难确定选择了什么.更改此行为以使其保持蓝色的最简单方法是什么?
我知道这可能与ListItem的风格有关,但我无法找到它.
干杯.
Guy*_*uck 50
我在合并的ResourceDictionary中使用以下内容完成了类似的操作,它可以帮助您:
<Style TargetType="ListBoxItem">
<Style.Resources>
<!--SelectedItem with focus-->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue" Opacity=".4"/>
<!--SelectedItem without focus-->
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey }" Color="LightBlue" Opacity=".4"/>
</Style.Resources>
</Style>
Run Code Online (Sandbox Code Playgroud)
Ebe*_*eer 11
这不是问题的答案,但是当我在寻找一种方法来禁用列表框中的选择时,我发现了这一点.通过使用稍微修改过的Guy's&bendewey技术,您可以在列表框中看到没有选择的外观而不替换基础项控件或类似的东西.这是我使用的代码:
<Grid.Resources>
<Style TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="White" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="White" />
</Style.Resources>
</Style>
</Grid.Resources>
Run Code Online (Sandbox Code Playgroud)
我还发现以下MSDN页面有用:
MSDN:SystemColors成员(System.Windows)
谢谢你的帮助,伙计们.
更完整的解决方案是让新画笔引用HighlightColor:
<Style TargetType="ListBox">
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ListBoxItem">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static Member=SystemColors.InactiveSelectionHighlightBrushKey}"
Color="{DynamicResource ResourceKey={x:Static Member=SystemColors.HighlightColorKey}}" />
</Style.Resources>
</Style>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
这将确保它使用相同的颜色并匹配系统主题(即使系统主题在运行时更改,感谢DynamicResource).
顺便说一句,似乎WPF的最新版本不再使用"ControlBrush"了,但更合适的是"InactiveSelectionHighlightBrush".
| 归档时间: |
|
| 查看次数: |
26399 次 |
| 最近记录: |