如何在现有项目中使用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
相关产品推荐
相关产品推荐

