Jas*_*n D 5 c# mvvm mvvm-light
我正在使用MVVM Light框架在WPF中开发一个项目.我有一个DataGrid必然的ObservableCollection<Worker>.截至目前,当我添加一个新项目时,DataGrid它不会更新,我相信这是因为setter永远不会触发.
public ObservableCollection<Worker> MasterWorkerList
{
get { return _masterWorkerList; }
set
{
System.Windows.MessageBox.Show("Firing");
_masterWorkerList = value;
RaisePropertyChanged(() => MasterWorkerList);
}
}
Run Code Online (Sandbox Code Playgroud)
即使我在调用此消息时,消息框也不会显示:
DataManager.Data.MasterWorkerList.Add(_create.NewWorker());
Run Code Online (Sandbox Code Playgroud)
我怎样才能RaisePropertyChanged开火,以便我可以更新UI?
我尝试使用这篇文章中的解决方案无济于事:ObservableCollection没有注意到它中的Item何时发生变化(即使使用INotifyPropertyChanged)
任何意见,将不胜感激.如果您需要更多我的代码,请告诉我.
Def*_*ult 10
您不应该在对象的列表上有公共setter.你应该在构造函数中设置ut
public MyClass(){
_masterWorkerList = new ObservableCollection<Worker>();
_masterWorkerList.CollectionChanged += OnCollectionChanged;
}
public ObservableCollection<Worker> MasterWorkerList
{
get { return _masterWorkerList; }
}
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e){
System.Windows.MessageBox.Show("Firing");
//RaisePropertyChanged(() => MasterWorkerList);
}
Run Code Online (Sandbox Code Playgroud)
CollectionChanged当您Add访问ObservableCollection 时会调用该事件.如果您需要更多根深蒂固的控件,您可以继承ObservableCollection并覆盖AddItem和RemoveItem方法.
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |