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" />

效果:

其中类型一列即为枚举列

完毕。

相关推荐
LcVong1 天前
WPF MediaPlayer获取网络视频流当前帧并展示图片完整范例
网络·wpf
bugcome_com1 天前
WPF数据绑定入门:从传统事件到5种绑定模式
wpf
LateFrames1 天前
我用 WPF 做了一个 “苍蝇飞舞” 的屏保
ui·wpf
wuty0071 天前
完善基于WPF开发的标尺控件(含实例代码)
wpf·wpf标尺·支持横向竖向标尺·ruler
浩浩测试一下2 天前
洪水猛兽攻击 Ddos Dos cc Drdos floods区别
安全·web安全·网络安全·系统安全·wpf·可信计算技术·安全架构
无心水2 天前
分布式环境下定时任务与SELECT FOR UPDATE的陷阱与解决方案
分布式·后端·wpf·xxl-job·quartz·定时任务·selectforupdate
xdpcxq10292 天前
Spring AOP + Guava RateLimiter 用注解实现优雅限流
spring·wpf·guava
Aevget3 天前
界面控件DevExpress WPF v25.2新版亮点:模板工具包全新升级
wpf·界面控件·devexpress·ui开发·.net 10
czhc11400756633 天前
wpf 129
wpf
码界奇点4 天前
基于eBPF技术的高性能网络防火墙系统设计与实现
开发语言·网络·毕业设计·php·wpf·go语言·源代码管理