私のプログラム(MVVM WPF)には多くの列挙型があり、列挙型をビュー内のコントロールにバインドしています。
それを行う方法はたくさんあります。
1) ComboBoxEdit(Devexpress Control) にバインドします。ObjectDataProvider を使用しています。
そして、これ
<dxe:ComboBoxEdit ItemsSource="{Binding Source={StaticResource SomeEnumValues}>
これは正常に機能しますが、TabControl ヘッダーでは機能しません。
2) それで、どちらも機能しなかった IValueConverter を使用することを考えました。
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
if (!(value is Model.MyEnum))
{
return null;
}
Model.MyEnum me = (Model.MyEnum)value;
return me.GetHashCode();
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
XAML で:
<local:DataConverter x:Key="myConverter"/>
<TabControl SelectedIndex="{Binding Path=SelectedFeeType,
Converter={StaticResource myConverter}}"/>
3) これを行う 3 つ目の方法は、動作依存プロパティを作成することです。
このようなもの
public class ComboBoxEnumerationExtension : ComboBox
{
public static readonly DependencyProperty SelectedEnumerationProperty =
DependencyProperty.Register("SelectedEnumeration", typeof(object),
typeof(ComboBoxEnumerationExtension));
public object SelectedEnumeration
{
get { return (object)GetValue(SelectedEnumerationProperty); }
set { SetValue(SelectedEnumerationProperty, value); }
}
列挙とそれにバインドするための最良の方法を知りたいです。現在、タブヘッダーを列挙型にバインドできません。