我正在尝试设置NavigationItem的样式。
<NavigationView.Resources>
<Style TargetType="NavigationViewItem" x:Key="sx1">
<Setter Property="Background" Value="{ThemeResource AccentTextFillColorPrimaryBrush}"/>
<Setter Property="Foreground" Value="{ThemeResource TextOnAccentFillColorPrimaryBrush}"/>
</Style>
</NavigationView.Resources>
只要鼠标指针不在项目上,这就可以工作。如果是,则仍在使用默认值。
我尝试了this answer,也从this answer加载了generic.xaml,但是当指针在该项上时,应用程序抛出异常。
2条答案
按热度按时间tf7tbtn21#
NavigationViewItem
中的NavigationViewItemPresenter
具有以下与VisualState
相关的指针(鼠标):每个
VisualState
都会更改一些属性,包括Foreground
和Background
。此外,每个VisualState
都是由控件本身自动应用的。您的代码只是更改了 Normal
VisualState
的Foreground
和Background
。这就是为什么当您将鼠标(指针)放在控件上时会得到不同的结果。为了满足您的要求,您需要为
NavigationViewItem
和NavigationViewItemPresenter
带来整个Style
,并编辑VisualStates
。33qvvth12#
(由于每个答案的字符数有限制...)
关于从generic.xaml中引入
Style
时出现的错误或异常,我的第一个猜测是名称空间有问题。在这种情况下,您需要删除名称空间,如 controls:、primitives 和 animatedvisuals:。
下面的代码来自我创建的一个示例应用程序,用于验证我的答案,所以这应该可以工作。它只是注解了 PointerOver
VisualState
中的更改。