2017-02-15 8 views
0

こんにちは私はWPFバインディングに問題があり、私が達成しようとしていることが実際に可能かどうか疑問に思っています。WPF - コンボボックスの複合バインディング

以下に示すように、コントロール内でObjectDataProviderを使用して、X509FindType EnumにバインドされたItemsSourceを持つComboBoxを持っています。

<ObjectDataProvider x:Key="x509FindTypes" MethodName="GetValues" ObjectType="{x:Type System:Enum}"> 
    <ObjectDataProvider.MethodParameters> 
     <x:Type TypeName="cryptography:X509FindType" /> 
    </ObjectDataProvider.MethodParameters> 
</ObjectDataProvider> 

問題は、私は2ウェイ(私はその特定の列挙型であることを、それを変更することはできません)文字列の一種である私のモデルでのSelectedItemとプロパティの間の結合を作成する必要があるということです。

目標は単純です - モデルに文字列を設定するたびに、ComboBoxはこの値を表示する必要があります。一方、ユーザーはComboBoxから要素を選択することもでき、文字列の値をその列挙型の名前に更新する必要があります。

アドバイスをいただきありがとうございました。私の醜い英語を申し訳ありません。

+0

列挙型の値と文字列:https://www.codeproject.com/Tips/868163/IValueConverter-Example-and-Usage-in-WPF – mm8

答えて

2

enumの値とstringの間の変換にはコンバータを使用する必要があります。

次のサンプルコードを参照してください。

コンバータ:

public class EnumToStringConv : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null) 
      return value; 

     return (X509FindType)Enum.Parse(typeof(X509FindType), value.ToString(), true); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return ((X509FindType)value).ToString(); 
    } 
} 

ビュー:

<ObjectDataProvider x:Key="x509FindTypes" MethodName="GetValues" ObjectType="{x:Type System:Enum}"> 
    <ObjectDataProvider.MethodParameters> 
     <x:Type TypeName="cryptography:X509FindType" /> 
    </ObjectDataProvider.MethodParameters> 
</ObjectDataProvider> 

<local:EnumToStringConv x:Key="EnumToStringConv" /> 
... 

<ComboBox SelectedItem="{Binding YourStringProperty, Converter={StaticResource EnumToStringConv}}" 
      ItemsSource="{Binding Source={StaticResource x509FindTypes}}" /> 

ビューモデル:あなたが間を変換するために、コンバータを使用する必要があります

private string _s = "FindByTimeExpired"; 
public string YourStringProperty 
{ 
    get { return _s; } 
    set { _s = value; } 
} 
+0

素晴らしい作品です、ありがとうございますmm8! – Kris82

関連する問題