提前致谢。
我已经在网上搜索了很长时间,坚果没找到任何东西。请帮助并尝试提供一些如何实现这一目标的想法。
在App.xaml中,我有一个像这样的ResourceDictionary:
<ResourceDictionary x:Key="Light">
<AcrylicBrush x:Key="NavigationViewDefaultPaneBackground" BackgroundSource="Backdrop" TintColor="White" TintOpacity=".6"/>
<AcrylicBrush x:Key="NavigationViewExpandedPaneBackground" BackgroundSource="HostBackdrop" TintColor="White" TintOpacity=".8"/>
</ResourceDictionary>
在MicroSoft Navigation视图网站上说:
它有效,我在ResourceDictionary中更改了这种颜色,但我想在设置中更改此颜色,我不能。我想让用户自定义。
在代码中,我无法找到导航视图的NavigationViewDefaultPaneBackground
或NavigationViewExpandedPaneBackground
属性,只是背景属性
我改变了这个背景,但它是NavPage的背景而不是改变。这个地方发生了变化:
在代码中,我无法找到Nav View的“NavigationView”背景。
所以,我该怎么办?如何在代码中更改此背景?
或如何在ResourceDictionary或设置中编写主题系统?
感谢。
答案 0 :(得分:0)
您必须创建Acrylic Brush
,并将其设置为Background
对象的NavigationView
属性。
查看Microsoft有关NavigationView和Acrylic
的文档 Generic.xaml
中显示的这两个资源是NavigationView对象的Background
的默认样式实现,用于当NavigationView在Compact
或Expanded
时模式。
这些不是依赖属性,例如 Background property
,而是 resources
定义丙烯画笔,它们设置为默认情况下,NavigationView的背景属性!取决于其当前的可视状态。
如果要定义自己的样式,最简单的方法是重新使用这两个资源,因为它们已经包含用于Compact/Expanded
模式之间转换的UI逻辑,它可以从{{1到In-App acrylic
,以及为什么Background acrylic
属性值在这两个资源定义上设置为不同的值。
如果要将背景丙烯酸的颜色设置为其他颜色,则必须更改BackgroundSource
和TintColor
依赖项属性。在上面定义的资源中,TintColor设置为TintOpacity
。
像这样,
White
对于两种背景状态,<AcrylicBrush x:Key="NavigationViewDefaultPaneBackground" BackgroundSource="Backdrop" TintColor="Blue" TintOpacity=".6"/>
<AcrylicBrush x:Key="NavigationViewExpandedPaneBackground" BackgroundSource="HostBackdrop" TintColor="Blue" TintOpacity=".8"/>
依赖项属性都设置为蓝色:应用程序内和背景丙烯酸,它应该修改NavigationView的窗格的颜色。
如果您想要增强“设置”选项,要让您的应用在多种状态之间切换,您必须绑定TintColor