1

私は WPF と MVVM Light フレームワークを使用しています。

コンボボックスの選択を元に戻す方法を知りたいです。

例えば:

  • デフォルトの選択は「テキスト 1」です。
  • ユーザーがコンボボックスで「テキスト 2」を選択すると、アクションを確認するダイアログ ボックス (はい/いいえ) が表示されます
  • ユーザーが「いいえ」をクリックした場合、値を「テキスト 1」に戻したい

これまでのところ、私のxamlは次のようになっています:

ComboBox ItemsSource="{Binding SourceData}" SelectedItem="{Binding SelectedSourceData,Mode=TwoWay}"

私のバインディング SourceData は、私の MainViewModel.cs で次のように定義されています。

public ObservableCollection<TextItem> SourceData { get; set; }

コンボボックスに名前がありません。バインディング メソッドを使用して選択を元に戻す方法はありますか?

どんな助けでも大歓迎です。

ありがとう。

4

4 に答える 4

1

(未検証)

バインドされたプロパティの ViewModel の Set で、値を内部的に設定する前に確認ダイアログを呼び出します。答えが「はい」の場合にのみプライベート値を設定し、いずれの場合も変更されたプロパティを上げます。

これは引き続きテスト可能です (確認ダイアログ用のモック可能なインターフェイスがある場合)。

于 2013-01-22T12:26:18.070 に答える
0

ICollectionView選択に関して最も一般的に使用されます。
MoveCurrentToPrevious()選択を現在のものから前のものに移動します。それがあなたが探しているものです。だから、それをあなたにバインドして、それでComboBox作業してください! MSDN の詳細については、お役に立てば幸いです。

于 2013-01-26T17:07:12.300 に答える
0

リストビューでこれを実行しました

このリンクを参照してください

コンボ ボックスの selecteditemchanged イベントでリレー コマンドにバインドするには、eventtocommand を使用する必要があります。選択は変更されますが、必要に応じてロジックを検証し、元に戻すことができます

于 2013-01-26T16:39:20.747 に答える
0

UIスレッドと入札の仕組みが原因で、同じ問題が発生しました。このリンクを確認してください: SelectedItem on ComboBox

サンプルの構造は分離コードを使用していますが、MVVM はまったく同じです。

于 2013-06-14T16:42:32.530 に答える