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

WPF DataGrid手动声明枚举下拉列无选项问题求助

WPF DataGrid手动声明ComboBox列绑定枚举的内置解决方法

不需要自定义转换器,用WPF内置的ObjectDataProvider就能实现和AutoGenerateColumns一致的枚举下拉效果,步骤如下:

  1. 在窗口/用户控件的资源中定义枚举值的数据源
    首先要引入必要的命名空间:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:你的项目命名空间" <!-- 枚举所在的命名空间 -->

然后添加ObjectDataProvider资源,通过Enum.GetValues方法获取枚举的所有可选值:

<Window.Resources>
    <ObjectDataProvider x:Key="StatusEnumValues" 
                        ObjectType="{x:Type sys:Enum}" 
                        MethodName="GetValues">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="local:OrderStatus"/> <!-- 替换为你的枚举类型 -->
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>
  1. 手动声明DataGridComboBoxColumn并绑定
    将列的ItemsSource绑定到上面定义的资源,同时绑定SelectedItemBinding到对象的枚举属性:
<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
        <!-- 其他列 -->
        <DataGridComboBoxColumn Header="订单状态"
                                ItemsSource="{Binding Source={StaticResource StatusEnumValues}}"
                                SelectedItemBinding="{Binding OrderStatus}"/> <!-- 替换为你的对象枚举属性名 -->
    </DataGrid.Columns>
</DataGrid>

这种方式完全依赖WPF内置机制,和AutoGenerateColumns自动生成枚举列的逻辑一致,不需要额外编写转换器或后台代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:04:56