0

これはおそらくそれほど難しいことではありませんが、wpf/mvvm の初心者として、まだいくつかの基本に苦労しています。

ビューにコンボボックス(フィルターのように機能する)とグリッドデータがあります。MMVM とデータバインディングを使用します。起動時に griddata が入力され、コンボボックスの選択が設定されます - これは正常に動作します。コンボボックスの選択が変わったときに、グリッドデータの内容を置き換えたいです。コンボボックスで選択された値はビューモデルのプロパティにバインドされているため、いつ変更されるかがわかるので、griddata にバインドされたコレクション (IList) のコンテンツを簡単に置き換えることができます。ただし、mvvm バインディングを使用してビューで griddata 自体を強制的に「更新」する方法がわかりません。

私は ObservableCollection<> の使用を検討していましたが、私が読んだことから、コンテンツを置き換えることもそれほど単純ではないようです。コレクション内の 1 つの項目がいつ変更されたかをビューが知る必要はありません。常にリストの内容全体を置き換えます。

提案をいただければ幸いです。

4

1 に答える 1

0

自分で実装INotifyPropertyChangedしてViewModel、変更時に呼び出すことができListます。

例:

public class ViewModel : INotifyPropertyChanged
{
    private List<MyObject> _myList;

    public List<MyObject> MyList
    {
        get { return _myList; }
        set { _myList = value; NotifyPropertyChanged(); }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void NotifyPropertyChanged([CallerMemberName]string propertyName = null)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

MyListたとえば、置き換えるMyList = newlistと、バインドされているものを更新するようにUIに指示しますMyList

于 2013-08-28T01:32:18.183 に答える