new*_*man 1 wpf enums combobox
我知道有几种方法可以做到这一点,但我想让它变得更容易,因为我有很多组合框以这种方式绑定.有使用ObjectDataProvider的建议在这里.问题是我必须为每个枚举创建一个资源条目,这很多.到目前为止,我一直在使用代码隐藏方式,因为它更短:
cmb.ItemsSource = Enum.GetValues(typeof(MyTypes));
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以在Xaml中生成等效项.我以为我们可以使用转换器归档这个.我们可以将类型转换为数组,然后将数组绑定到组合框'ItemsSource.但我一直坚持如何指定转换器的枚举.这是我的代码:
我的枚举:
public enum MyTypes { Type1, Type2, Type3 };
Run Code Online (Sandbox Code Playgroud)
这是我的转换器:
public class EnumToArrayConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Enum.GetValues(value.GetType());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null; // I don't care about this
}
}
Run Code Online (Sandbox Code Playgroud)
我的Xaml资源:
<lib:EnumToArrayConverter x:Key="E2A"/>
Run Code Online (Sandbox Code Playgroud)
以下是如何使用它:
<ComboBox SelectedItem="{Binding MyType}" ItemsSource="{Binding MyTypes, Converter={StaticResource E2A}}"/>
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是如何为转换器指定我的枚举"MyTypes".我也尝试在命名空间前添加,但它没有帮助.
归档时间: |
|
查看次数: |
10914 次 |
最近记录: |