这可能不是那么困难,但作为一名wpf / mvvm初学者,我仍然在努力学习一些基础知识。
我在视图中有一个组合框(就像一个过滤器)和一个griddata。我使用MMVM和数据绑定。在启动时填充griddata并设置组合框的选择 - 这很好。当组合框中的选择发生变化时,我想替换griddata的内容。组合框选择的值绑定到我的viewmodel中的属性,所以我知道它何时更改,我可以轻松地替换绑定到griddata的集合(IList)的内容。但是我不知道如何使用mvvm绑定强制griddata在视图中“刷新”自己。
我正在考虑使用ObservableCollection<>但从我所看到的内容来看,替换内容也不是那么简单。我真的不需要视图知道集合中的单个项目何时发生变化 - 我将始终替换列表的整个内容。
我很感激任何建议。
答案 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));
}
}
}
现在,当您替换MyList
时MyList = newlist
它会告诉用户界面更新绑定到MyList