私は次のような列挙型を持っています:
public enum ProcessControlSysType
{
PFS = 1,
MES = 2,
}
次のように、itemsourceとしてコンボボックスにバインドします。
<ObjectDataProvider x:Key="ProcessSystemType"
MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:ProcessControlSysType" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ComboBox Name="combProcessControlSysType"
ItemsSource="{Binding Source={StaticResource ProcessSystemType }}"
SelectionChanged="combProcessControlSysType_SelectionChanged"></ComboBox>
それは正常に動作します。私が欲しいのは、app.configファイルから値を取得し、SelectedItemと同じコンボボックスにバインドすることです。
<ComboBox Name="combProcessControlSysType"
ItemsSource="{Binding Source={StaticResource ProcessSystemType }}"
SelectedItem="{Binding Source={StaticResource ConfigFile}, Path=Default.ProcessControlSys, Converter={StaticResource ProcessSystemConverter}}"
SelectionChanged="combProcessControlSysType_SelectionChanged"></ComboBox>
値コンバーターは次のとおりです。
public class ProcessSystemToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string strProcessSystem = value.ToString();
switch (strProcessSystem)
{
case "PFS" :
return ProcessControlSysType.PFS;
case "MES" :
return ProcessControlSysType.MES;
default:
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
これを実行すると、コンボボックスは正常に機能します。しかし、他のコントロールは、コードビハインドで呼び出すとnullになります。