gpt4 book ai didi

c# - MVVM 中 ObservableCollection 和 INotifyPropertyChanged 的​​问题

转载 作者:行者123 更新时间:2023-12-03 10:50:42 26 4
gpt4 key购买 nike

我在 XAML 中有一个图表控件,以及绑定(bind)到该控件的数据点。
问题是当我的 ModelView 更改点的集合时,图表控件没有收到任何通知。我试过 dp,使用 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); }
}

绑定(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 的值的时候通知吗?

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com