You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#代码中修改Microsoft.UI.Xaml.Controls.NavigationView默认面板背景?

在C#中修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 11:52:48