微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用通用枚举填充WPF组合框到List <string>函数

如何解决如何使用通用枚举填充WPF组合框到List <string>函数

我想用下面的enumList<string>来填充WPF组合框(和其他类似的控件):

如何在XAML中调用它?

public class ToList<TEnum> : List<string> where TEnum : struct,Enum
{
    public static ToList()
    {
        foreach (TEnum e in Enum.GetValues(typeof(TEnum)))
        {
            // Skips some values (TEnum.NotDefined)
            if (e.Equals((TEnum)Enum.ToObject(typeof(TEnum),-1))) continue;
            
            // GetDescription() is an extension method based on the [Description] attribute
            Add(e.GetDescription());
        }
     }
}

带有硬编码枚举的示例

具有MyEnum视图模型属性的XAML

<converters:MyEnumToStringConverter x:Key="MyEnumToString"/>
...
<ComboBox ItemsSource="{StaticResource MyEnumList}" SelectedItem="{Binding MyEnum,Converter=MyEnumToString}">

非通用枚举列表方法

public class MyEnumList : List<string>
{
    public MyEnumList()
    {
        foreach (MyEnum myEnum in Enum.GetValues(typeof(MyEnum)))
        {
            if (myEnum == myEnum.NotDefined) continue;

            Add(myEnum.GetDescription());
        }
    }   
}

值转换器(将来可能会进行文化本地化)。 我可以将枚举作为targettype或参数传递吗?

public class MyEnumToStringConverter : IValueConverter
{
    public object Convert(object value,Type targettype,object parameter,CultureInfo culture) => ((MyEnum)value).GetDescription();

    public object ConvertBack(object value,CultureInfo culture) => Binding.Donothing;
}

基本上,我不想为MyEnumAMyEnumB等硬编码上面的示例。

感谢您的见解:-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。