我的UI上有一个ListBox绑定到ObservableCollection的属性.我将ObservableCollection的新实例设置到视图模型的构造函数中的属性中,我可以使用表单上的按钮添加项目.这些在列表中可见.
一切都很好.
但是,如果在按钮回调中重新初始化该属性,则会破坏绑定,UI不再显示集合中的内容.
我认为绑定将继续查找属性的值,但它可能与新引用的引用相关联.
我有这个权利吗?任何人都可以扩展如何联系起来?当我的观点模型不了解视野时,有没有办法重新绑定?
解决方法
确保在重新取代您的收藏后,您正在提高一个PropertyChangedEvent.提高此事件将允许视图处理对该属性的更改,而模型不知道该视图.
class Model : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string name) { if (PropertyChanged != null) PropertyChanged(this,new PropertyChangedEventArgs(name)); } private ObservableCollection<string> _list = new ObservableCollection<string>(); public ObservableCollection<string> List { get { return _list; } set { _list = value; NotifyPropertyChanged("List"); } } public Model() { List.Add("why"); List.Add("not"); List.Add("these?"); } }