如何在C#代码中修改Microsoft.UI.Xaml.Controls.NavigationView默认面板背景?
嘿,我明白你已经用XAML资源的方式搞定了NavigationView的面板背景,现在想换成C#代码实现对吧?其实思路和XAML是一致的——都是修改NavigationViewDefaultPaneBackground这个系统资源,只是换成了代码层面的操作。
下面是具体的实现步骤和代码示例:
- 首先,我们需要获取你定义的
ViuPageBackgroundColor1颜色资源,然后创建对应的SolidColorBrush - 接着把这个新的画笔替换到页面(或者应用级)的资源集合中,覆盖默认的
NavigationViewDefaultPaneBackground资源
代码示例
你可以把这段代码放在页面的构造函数(记得在InitializeComponent()之后)或者Loaded事件处理方法里:
// 获取自定义的颜色资源 var targetColor = (Color)Application.Current.Resources["ViuPageBackgroundColor1"]; // 创建对应的纯色画笔 var paneBackgroundBrush = new SolidColorBrush(targetColor); // 将画笔添加到当前页面的资源中,覆盖默认背景 this.Resources["NavigationViewDefaultPaneBackground"] = paneBackgroundBrush; // 如果修改后没立即生效,可以尝试让NavigationView重新渲染 // yourNavigationViewInstance.InvalidateArrange(); // yourNavigationViewInstance.InvalidateVisual();
注意事项
- 如果
ViuPageBackgroundColor1是定义在当前页面的Resources里,就把Application.Current.Resources换成this.Resources - 如果是想在整个应用范围内生效,直接修改
Application.Current.Resources即可,不需要针对单个页面操作 - 要是修改后NavigationView的背景没更新,取消注释上面的
InvalidateArrange()或InvalidateVisual()方法,强制控件重新渲染样式
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

