当另一个控件(例如组合框)选择发生变化时,如何替换griddata内容?

时间:2013-08-28 01:24:22

标签: wpf mvvm

这可能不是那么困难,但作为一名wpf / mvvm初学者,我仍然在努力学习一些基础知识。

我在视图中有一个组合框(就像一个过滤器)和一个griddata。我使用MMVM和数据绑定。在启动时填充griddata并设置组合框的选择 - 这很好。当组合框中的选择发生变化时,我想替换griddata的内容。组合框选择的值绑定到我的viewmodel中的属性,所以我知道它何时更改,我可以轻松地替换绑定到griddata的集合(IList)的内容。但是我不知道如何使用mvvm绑定强制griddata在视图中“刷新”自己。

我正在考虑使用ObservableCollection<>但从我所看到的内容来看,替换内容也不是那么简单。我真的不需要视图知道集合中的单个项目何时发生变化 - 我将始终替换列表的整个内容。

我很感激任何建议。

1 个答案:

答案 0 :(得分: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));
        }
    }
}

现在,当您替换MyListMyList = newlist它会告诉用户界面更新绑定到MyList

的内容