WPF 表格中单元格使用下拉框显示枚举属性的一种方式

1.实体类中有枚举类型的属性:

cs 复制代码
public class BelowCameraPosition: MachinePositionBase
{
    
    public CameraPosition CameraPositionType { get; set; }
}
cs 复制代码
public enum CameraPosition
{
    [Description("×")]
    Null,
    [Description("避让位置")]
    Avoid
}

然后使用表格控件显示实体类列表,这里的控件可能是第三方控件,我这里演示的也是第三方控件实现的。

第一步:

定义转换器,提供下拉框资源:

cs 复制代码
public class EnumToItemsSourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || !value.GetType().IsEnum)
            return null;

        var enumType = value.GetType();
        var items = new List<KeyValuePair<string, object>>();

        foreach (var enumValue in Enum.GetValues(enumType))
        {
            var field = enumType.GetField(enumValue.ToString());
            var attribute = field.GetCustomAttribute<DescriptionAttribute>();
            var displayName = attribute?.Description ?? enumValue.ToString();
            
            items.Add(new KeyValuePair<string, object>(displayName, enumValue));
        }

        return items;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

第二步:

修改表格列定义:

XML 复制代码
<telerik:GridViewComboBoxColumn
    Width="*"
    DataMemberBinding="{Binding CameraPositionType, Mode=TwoWay}"
    Header="类型"
    ItemsSourceBinding="{Binding CameraPositionType, 
                          Converter={StaticResource EnumToItemsSourceConverter}}"
    DisplayMemberPath="Key"
    SelectedValuePath="Value" />

效果:

其中类型一列即为枚举列

完毕。

相关推荐
FuckPatience2 天前
WPF 给一个界面上的按钮应用同一种样式
wpf
Polevne3 天前
WPF\MAUI\Avalonia Dispatcher
wpf
Ares-Wang3 天前
wpf 图表制作 LiveCharts
wpf
A_nanda3 天前
c#WPF开发常见问题
开发语言·c#·wpf
Wang's Blog6 天前
AI Agent白手起家60: 多智能体架构解析与 LangGraph 入门
人工智能·架构·wpf
.Peter6 天前
.NET/WPF 程序在部分 Windows 电脑无法保存用户环境变量:使用 DPAPI 实现安全兼容
windows·信息安全·c#·.net·wpf·环境变量·dpapi
dalong107 天前
WPF:3D型材模型
3d·wpf
一念春风7 天前
文件透明加密(C、C#)
c语言·c#·wpf
yanaiding8 天前
C# WPF 独立开发看图工具 PixSight 经验介绍(二)—— 水印模块开发实录
图像处理·c#·wpf·个人开发
我是苏苏11 天前
WPF开发01:基础控件及常用模板篇
开发语言·c#·html·wpf