我在XAML中有一个图表控件,以及绑定到控件的数据点。 问题是,当我的ModelView更改点的集合图表控件没有得到任何通知。我已经尝试过dp,使用ObservableCollection和INotifyPropertyChanged没有任何运气。我知道改变一个字段/属性和使集合操作(如添加/删除/替换等)更改传播到图表控件是有区别的。但我没有得到它的工作。更改事件仅在实例/恢复集合时触发。MVVM中的ObservableCollection和INotifyPropertyChanged问题
是否有任何链接到正在工作的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); }
}
的结合是正确和测试。代码在Window.Resources中。
ObjectDataProvider ObjectType="{x:Type vm:ListWorkViewModel}" x:Key="ListWorkViewModel"
控件的绑定。
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?
您是否在使用Visifire图表? – TerrorAustralis 2010-10-27 05:49:36
您的WorkModel是否使用DependencyProperties实现INotifyPropertyChanged或DependencyObject? – Euphoric 2010-10-27 06:05:06
@Euphoric,它不应该需要。我可以看到这个不工作的唯一原因是在Chart控件中。经历了一个断点,看看它在财产变化时的作用 – TerrorAustralis 2010-10-27 06:11:42