在代码或设置中更改汉堡菜单背景

时间:2018-01-02 07:11:09

标签: c# uwp themes

提前致谢。

我已经在网上搜索了很长时间,坚果没找到任何东西。请帮助并尝试提供一些如何实现这一目标的想法。

在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视图网站上说:

enter image description here

它有效,我在ResourceDictionary中更改了这种颜色,但我想在设置中更改此颜色,我不能。我想让用户自定义。

在代码中,我无法找到导航视图的NavigationViewDefaultPaneBackgroundNavigationViewExpandedPaneBackground属性,只是背景属性

enter image description here

我改变了这个背景,但它是NavPage的背景而不是改变。这个地方发生了变化:

enter image description here

在代码中,我无法找到Nav View的“NavigationView”背景。

所以,我该怎么办?如何在代码中更改此背景?

enter image description here

或如何在ResourceDictionary或设置中编写主题系统?

感谢。

1 个答案:

答案 0 :(得分:0)

您必须创建Acrylic Brush,并将其设置为Background对象的NavigationView属性。

查看Microsoft有关NavigationViewAcrylic

的文档

Generic.xaml中显示的这两个资源是NavigationView对象的Background的默认样式实现,用于当NavigationView在CompactExpanded时模式。

这些不是依赖属性,例如 Background property而是 resources 定义丙烯画笔,它们设置为默认情况下,NavigationView的背景属性!取决于其当前的可视状态。

如果要定义自己的样式,最简单的方法是重新使用这两个资源,因为它们已经包含用于Compact/Expanded模式之间转换的UI逻辑,它可以从{{1到In-App acrylic,以及为什么Background acrylic属性值在这两个资源定义上设置为不同的值。

如果要将背景丙烯酸的颜色设置为其他颜色,则必须更改BackgroundSourceTintColor依赖项属性。在上面定义的资源中,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