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

如何在XAML中直接将ComboBox的ItemsSource绑定到ResourceDictionary的所有键?

在XAML中直接绑定ComboBox的ItemsSource到ResourceDictionary的键列表

要在XAML里直接完成绑定,你需要借助ObjectDataProvider来包装ResourceDictionary的Keys集合——因为ResourceDictionary本身无法直接作为绑定源暴露它的键列表。具体实现步骤如下:

1. 调整资源字典的定义

把你的图标资源字典放到MergedDictionaries中,并给它设置x:Key(而非x:Name,资源字典内的子资源需要通过键标识),同时添加ObjectDataProvider来获取键列表:

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!-- 引入你的图标资源字典,设置x:Key便于后续引用 -->
            <ResourceDictionary x:Key="Icons" Source="..."/>
        </ResourceDictionary.MergedDictionaries>
        
        <!-- 用ObjectDataProvider获取Icons字典的Keys集合 -->
        <ObjectDataProvider x:Key="IconKeys" 
                            ObjectInstance="{StaticResource Icons}" 
                            MethodName="get_Keys"/>
    </ResourceDictionary>
</UserControl.Resources>

2. 绑定ComboBox的ItemsSource

直接将ComboBox的ItemsSource绑定到上面定义的IconKeys资源:

<Grid>
    <ComboBox ItemsSource="{Binding Source={StaticResource IconKeys}}"/>
</Grid>

补充说明

  • ObjectDataProvider的作用是调用资源字典的get_Keys方法(对应Keys只读属性的获取方法),把原本无法直接绑定的Keys集合转换成可绑定的数据源。
  • 如果你的资源字典是静态加载的,这种方式完全够用;如果需要动态更新资源字典的键列表,可能需要在后台代码中维护一个ObservableCollection并同步字典的键,再绑定到这个集合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:10:24