我在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