如何解决如何使用通用枚举填充WPF组合框到List <string>函数
我想用下面的enum
至List<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;
}
基本上,我不想为MyEnumA
,MyEnumB
等硬编码上面的示例。
感谢您的见解:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。