2016-12-18 8 views
0

私はwpfデスクトップアプリケーションを持っています。バウンドチェックボックスから値を取得する

私はcomboxボックスを持っており、それは辞書オブジェクトにバインドされています。

<ComboBox ItemsSource="{Binding MyData}" DisplayMemberPath="Value.Login" 
    SelectedItem="{Binding MySelectedUser }" SynchronizedWithCurrentItem="True" /> 

と私のVMで

public Dictionary<string,UserRecord> Users 
{ 
    get 
    { 
     return 'A Dictionary Defined Data' 
    } 
     set { _Users = value; RaisePropertyChanged("Users"); } 
    } 
} 

public UserRecord SelectedUser 
{ 
    get { return _SelectedUser; } 
    set { _SelectedUser = value; 
     RaisePropertyChanged(InformedWorkerCommon.Constants.VM_SelectedUser); 
    } 
} 

私がドロップダウンからアイテムを選択したときに私が手にエラーがある:私はもともとリストを使用し、それをすべて処理した

System.Windows.Data Error: 23 : Cannot convert '[ADMIN, UI.InformedWorkerViewModel.UserRecord]' from type 'KeyValuePair`2' to type 'UI.InformedWorkerViewModel.UserRecord' for 'en-US' culture with default conversions; consider using Converter property of Binding. NotSupportedException:'System.NotSupportedException: TypeConverter cannot convert from System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[UI.InformedWorkerViewModel.UserRecord, UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. 
    at System.ComponentModel.TypeConverter.GetConvertFromException(Object value) 
    at System.ComponentModel.TypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) 
    at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward)' 
System.Windows.Data Error: 7 : ConvertBack cannot convert value '[ADMIN, UI.InformedWorkerViewModel.UserRecord]' (type 'KeyValuePair`2'). BindingExpression:Path=HeartBeat.CommonData.LogIn.SelectedUser; DataItem='ApplicationViewModel' (HashCode=43160662); target element is 'MetroComboBox' (Name=''); target property is 'SelectedItem' (type 'Object') NotSupportedException:'System.NotSupportedException: TypeConverter cannot convert from System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[UI.InformedWorkerViewModel.UserRecord, UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. 
    at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward) 
    at MS.Internal.Data.ObjectTargetConverter.ConvertBack(Object o, Type type, Object parameter, CultureInfo culture) 
    at System.Windows.Data.BindingExpression.ConvertBackHelper(IValueConverter converter, Object value, Type sourceType, Object parameter, CultureInfo culture) 

代わりにDictionaryコレクションタイプを使用する必要がありました。私はちょうど解決のために(とグーグル)困惑しています。

すべてのポインタ/教育私は感謝します。

ありがとうございます!

+0

@ MetroSmurfありがとうありがとうございました –

+0

@closersその複製の回答者からの解決が差異をもたらさなかった場合は削除されます。それは私のために働かなかった –

+1

@closers私のせいで私は正しく読まなかった。私は他のポスターのおかげで言った後に二番目に削除するでしょう:) –

答えて

1

とどのような値として保持するために働くことができると思う:あなた以来、今

SelectedValuePath="Value" DisplayMemberPath="Key" 

Dictionary<string, UserRecord>を使用している場合、コンボボックスはSelectedValueとして辞書から1つの項目を返します。その1つのアイテムはKeyValuePair<string, UserRecord>なので、UserRecordにキャストすることはできません(これがエラーの原因です)。

+0

これは何の違いもありません。同じエラー:( –

+0

あなたの編集が意味を成し遂げましたが、修正方法がわからない –

+0

値の切り替えキーを試してください。逆も同様です。 – CodingYoshi

0

Solution

DisplayMemberPath="Value" 

私は、これはあなたがディスプレイを何あなたのコンボボックスを指示する必要があり

+0

キーが値ではありません^^ – mty

+0

この質問はあなたがここにリンクした質問と重複している場合は、質問の下にある「フラグ」ボタンを使用して、その効果。重複していない場合は、 – Marusyk

+0

というリンク専用の回答ではなく、完全な回答を残してください。別のものをここで複数入力することは無視してください。 –

関連する問題