1

ItemsSourceがObservableCollectionにバインドされたコンボボックスがあります。RadioButtonを使用すると、ユーザーはモードを選択できます。モードごとに、専用の差分リストがコンボボックスで利用可能である必要があります。

Observablecollectionを使用する際の私の問題は、public observableCollectionが初期化されると、それを変更するのは、[すべてクリア]と[新しいリストをアイテムごとに追加する]だけであるということです。

これは非常に非効率的であり、選択したアイテムの検証で問題が発生します。

削除/追加せずにUIで更新されるように、アイテムソースをリセットできる別の方法を提案できますか?

4

1 に答える 1

2

非常に基本的なアプローチ:

class VM
{
  private ObservableCollection mode1;
  private ObservableCollection mode2;

    //view binds to this
  public ObservableCollection<T> X { get; private set; }

    //changing radiobutton invokes this
  public void ChangeMode( mode )
  {
    if( mode == 1 )
      X = mode1;
    else if( mode == 2 )
      X = mode2;
    else
      X = null;
  }
}

テストはしていませんが、動作するはずです。モードを変更した後にUIに更新がない場合は、RaisePropertyChanged( ... )ChangeModeが戻る前にXを呼び出す必要があります。また、リストに追加/削除しない場合は、ObservableCollectionは実際には必要ありません。代わりに、List<T>

于 2012-06-21T09:26:07.550 に答える