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

如何在现有项目中使用Windows.UI.Xaml的ResourceDictionary.ThemeDictionaries?

解决方案
  • 直接使用完全限定类名
    不用修改现有using语句,在声明ResourceDictionary时直接写出完整命名空间,避免与System.Windows下的类冲突:

    var winuiResourceDict = new Windows.UI.Xaml.ResourceDictionary();
    // 正常访问ThemeDictionaries属性
    winuiResourceDict.ThemeDictionaries.Add("Dark", new Windows.UI.Xaml.ResourceDictionary());
    

    适合临时或局部使用Windows.UI.Xaml.ResourceDictionary的场景。

  • 给命名空间加别名
    在代码文件顶部为Windows.UI.Xaml设置别名,后续通过别名引用,代码更简洁:

    using WinUI = Windows.UI.Xaml;
    

    声明实例时使用别名:

    var resourceDict = new WinUI.ResourceDictionary();
    resourceDict.ThemeDictionaries.Add("Light", new WinUI.ResourceDictionary());
    

    适合需要多次使用Windows.UI.Xaml下资源字典的场景。

  • 替换命名空间引用
    如果项目不再需要System.Windows.ResourceDictionary,直接删除对应的using语句,添加Windows.UI.Xaml的引用:

    // 移除这行:using System.Windows;
    using Windows.UI.Xaml;
    

    之后直接声明ResourceDictionary就会默认使用Windows.UI.Xaml下的版本:

    var resourceDict = new ResourceDictionary();
    resourceDict.ThemeDictionaries.Add("HighContrast", new ResourceDictionary());
    

    注意:操作前要确认项目中没有依赖System.Windows.ResourceDictionary的代码,避免编译报错。

  • XAML文件中的处理方式
    在XAML根节点添加Windows.UI.Xaml的命名空间声明,然后指定使用该命名空间下的ResourceDictionary:

    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:winui="using:Windows.UI.Xaml">
        <winui:ResourceDictionary>
            <winui:ResourceDictionary.ThemeDictionaries>
                <winui:ResourceDictionary x:Key="Dark">
                    <!-- 深色主题资源定义 -->
                </winui:ResourceDictionary>
            </winui:ResourceDictionary.ThemeDictionaries>
        </winui:ResourceDictionary>
    </Page>
    

内容的提问来源于stack exchange,提问作者pikachugb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:04:53