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

WinUI 3支持多层嵌套ResourceDictionary吗?能否访问Button1字典?

WinUI 3中多层嵌套ResourceDictionary的支持与访问方式

WinUI 3完全支持这种多层嵌套的ResourceDictionary结构,你可以通过代码后台或者特定的XAML语法来访问嵌套的Button1字典及其内部资源。

一、代码后台访问方式

通过逐层索引的方式,就能获取到嵌套的目标字典及资源:

// 获取应用全局资源字典
var rootResourceDict = Application.Current.Resources;
// 取出Dark主题对应的字典
if (rootResourceDict.ThemeDictionaries.TryGetValue("Dark", out object darkDictObj) && darkDictObj is ResourceDictionary darkDict)
{
    // 取出Dark字典下的Button1子字典
    if (darkDict.TryGetValue("Button1", out object button1DictObj) && button1DictObj is ResourceDictionary button1Dict)
    {
        // 访问Button1字典内的具体资源,比如ButtonBackground
        if (button1Dict.TryGetValue("ButtonBackground", out object brushObj) && brushObj is SolidColorBrush backgroundBrush)
        {
            // 此处可直接使用获取到的背景画刷
        }
    }
}

二、XAML中直接引用资源

如果要在XAML里直接使用Button1字典中的资源,可通过多层静态资源嵌套引用的方式:

<Button Background="{StaticResource {StaticResource Dark}[Button1][ButtonBackground]}"
        Content="测试按钮" />

需要注意的是,这种嵌套字典结构不会自动参与WinUI默认的主题切换资源合并逻辑。如果需要跟随系统主题自动切换,建议将按钮相关的主题资源拆分到独立的ResourceDictionary文件中,再通过ResourceDictionary.MergedDictionaries引入,这样更契合WinUI主题系统的设计逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:37:39