0

私は次のような列挙型を持っています:

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になります。

4

0 に答える 0