因此,除了我的代码的一部分之外,一切都很好。我正在查看一个可观察的集合和一个列表,并在可观察的集合中设置一个元素,使其等于列表中的元素
someitemInOC = newListItem;
现在,触发了CollectionChanged事件,但是问题是我也希望也触发someitemInOC
类型的所有属性...因为我有一个想要的SomeType_PropertyChanged
函数打电话给............问题是我不知道该怎么办。显然,someitemInOC
的类型具有setter中的OnNotifyPropertyChanged
函数的所有属性...但是如何触发所有属性以调用它们的notify?这是一个数据模型,而不是一个视图模型,但是它确实继承了INotifyPropertyChanged
我的DataModel片段
public sealed class WModel : INotifyPropertyChanged
{
private bool isD;
public bool IsD
{
get { return isD; }
set { isD = value; NotifyPropertyChanged(); }
}
private string wd;
public string Wd
{
get { return wd; }
set { wd = value; NotifyPropertyChanged(); }
}
public void UpdateAllParameters()
{
NotifyPropertyChanged(string.Empty);
}
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
在我的VM构造函数中,
WSource.CollectionChanged += WSource_CollectionChanged;
然后再向下
private void WSource_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (WModel item in e.OldItems)
{
//Removed items
item.PropertyChanged -= WPropertyChanged;
}
}
else if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (WModel item in e.NewItems)
{
//Added items
item.PropertyChanged += WPropertyChanged;
}
}
}
public void WPropertyChanged(object sender, PropertyChangedEventArgs e)
{
Wd = WSource.Where(x => x.IsD).Count();
}
Wd
是一个整数
我希望在替换可观察集合中的项目时调用WPropertyChanged函数...
我尝试做someitemInOC.UpdateAllParameters()
,但没有任何反应
someitemInOC = newListItem;
someitemInOC.UpdateAllParameters();
NotifyPropertyChanged(string.Empty)被调用了,但这对任何东西都没有影响...我看不到setters被命中或Notify函数被调用...
使其正常工作...
必须将其添加到CollectionChanged函数 cry
else if (e.Action == NotifyCollectionChangedAction.Replace)
{
foreach (WModel item in e.OldItems)
{
//Removed items
item.PropertyChanged -= WPropertyChanged;
}
foreach (WModel item in e.NewItems)
{
//Added items
item.PropertyChanged += WPropertyChanged;
}
}
我的生活...