我在XAML中有一个图表控件,并且有绑定(bind)到该控件的数据点。
问题是当我的ModelView更改Chart控件的点集合时,没有任何通知。我尝试了dp,使用了ObservableCollection和INotifyPropertyChanged却没有任何运气。我知道更改字段/属性与进行收集操作(如(添加/删除/替换等))以使更改传播到Chart控件之间存在区别。但是我还没有开始工作。仅当我实例化/重新实例化集合时,才会触发change事件。

有没有链接到与集合兼容的MVVM?

值得知道。


public class ObservableCollection : Collection, INotifyCollectionChanged, INotifyPropertyChanged
public static DependencyProperty WorkModelsProperty = DependencyProperty.Register("WorkModels", typeof(ObservableCollection), typeof(Chart), new PropertyMetadata(new ObservableCollection { }, new PropertyChangedCallback( (sender, args) => { Debugger.Break(); //trigged only when collection got new instance }))); public ObservableCollection WorkModels { get { return (ObservableCollection)GetValue(WorkModelsProperty); } set { SetValue(WorkModelsProperty, value); } }
绑定(bind)正确且经过测试。
Window.Resources中的代码。

ObjectDataProvider ObjectType =“{x:Type vm:ListWorkViewModel}” x:Key =“ListWorkViewModel”

控件的绑定(bind)。
WorkModels="{Binding Source={StaticResource ListWorkViewModel}, Path=WorkModels}"
在ViewModel中,我使用以下代码进行更改。 (使用INotifyPropertyChanged时) WorkModels.Add(workModel);this.RaisePropertyChanged("WorkModels");protected void RaisePropertyChanged(string propertyName){ VerifyPropertyName(propertyName); if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));}
使用ObservableCollection时,我仅将新数据点添加到集合中。 WorkModels.Add(workModel);
Question on MVVM pattern on WPF?

最佳答案

需要更多代码。你如何绑定(bind)? ObservableCollection是什么类型?您确定在类里面没有注意到ObservableColletion的值(value)吗?

编辑:还更改您的问题的标题。这有点模棱两可,并不是您提出的问题。

关于c# - MVVM中的ObservableCollection和INotifyPropertyChanged问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4030284/

10-12 01:40