在我们的 WPF 应用程序中,我们有一个自定义列表框,当它没有样式时,它与默认的 Windows 主题相匹配,例如突出显示、悬停或选定的项目(即漂亮的蓝色半透明渐变)。
但是,当我们尝试创建自己的 ListBoxItem 模板并使用此代码中的值时...
<Trigger Property="Selector.IsSelected" Value="True">
<Setter TargetName="Bd" Property="Panel.Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
</Trigger>
...控件失去了 Aero 主题的所有痕迹,恢复为旧的 Win95/Classic 外观。我们怎么说'嘿......将主题的'突出'样式应用到我们的边框。'?
同样,资源显然是加载的,直到我们重新模板化控件,但我们应该如何访问主题的内置样式?毕竟,那种“选择”的外观无处不在……ListBox、ComboBox、ListView,无处不在。我们也只是希望它在我们的控制之下,而不必重新发明轮子。
注意:我们使用 ShowMeTheTemplate.exe 应用程序来获取默认的“Aero”样式,但同样,这不是我们在运行它时看到的。