1

mvvm パターンのため、モデルは ViewModel について何も知らないはずです。

モデルの 1 つでListBoxフィールドを作成するとどうなりますか。よく見えます。しかし、次のステップでは、この値を ModelView の ObservableCollection に関連付ける必要があります。

私がすることができます:

var myCollection = 新しい ObservableCollection (myList);

しかし、この場合、OC のすべての利点を失いました。このコレクションは静的になり、このコレクションに関連付けられたビューには挿入も更新も反映されません。

何かご意見は ?

4

2 に答える 2

2

インターフェイスを自動的に更新するため、通常は ObservableCollection を使用します。私はあなたが間違った方法で何かをしていると思います。ViewModel には、要素のリストを持つ ObservableCollection があり、通常のリストまたは要素の配列で初期化できます。ListBox で OC を初期化しないでください。ビューにバインドする必要がある後。OC に要素を追加すると、ビューが更新されます。

于 2012-04-05T06:01:32.850 に答える
1

電話すると

var myCollection = new ObservableCollection (ListBox)

myList の値を ObservableCollection にコピーしています。ここでは何も ListBox リストを更新しません。

これが望ましい効果であり、ViewModel を次のように更新したい場合:

///...
var myCollection = new ObservableCollection (ListBox)
myCollection.CollectionChanged += (sender, args) => RefreshListBox(myCollection);
///...
private void RefrehListBox(ObservableCollection<...> collection){
 //Refresh ListBox with collection
}

このようにして、ObservableCollection が更新されるたびに、基礎となるモデルを変更と同期します。

于 2012-04-05T06:04:42.167 に答える