gpt4 book ai didi

wpf - 嵌套类结构的 PropertyChanged

转载 作者:行者123 更新时间:2023-12-02 00:23:37 51 4
gpt4 key购买 nike

我有以下类结构

class Top : NotifyPropertyChanged
{
private List<Inner> innerList;

public bool IsInnerTrue
{
get
{
foreach (Inner inner in innerList)
{
if (inner.IsTrue)
return true;
}
return false;
};
}
}

class Inner : NotifyPropetyChanged
{
private bool isTrue;
public bool IsTure
{
get
{
return isTrue;
}
set
{
isTrue = value;
NotifyPropretyChanged("IsTrue");
}
}
}

在我看来,我正在绑定(bind)到 Top 类的 IsInnerTrue 属性。我的问题是,当其中一个内部对象的 IsTrue 属性更改值时,我无法弄清楚如何为 IsInnerTrue 触发 PropertyChanged 事件。

除了为每个内部对象设置事件处理程序之外,有人有什么建议吗?

最佳答案

这里有两个选项。一、订阅内部的 PropertyChanged 事件:

class Top : NotifyPropertyChanged
{
private List<Inner> innerList = new List<Inner>();

public bool IsInnerTrue
{
get
{
foreach (Inner inner in innerList)
{
if (inner.IsTrue)
return true;
}
return false;
}
}

public void Add(Inner inner)
{
innerList.Add(inner);
inner.PropertyChanged += InnerPropertyChanged;
}

public void Remove(Inner inner)
{
innerList.Remove(inner);
inner.PropertyChanged -= InnerPropertyChanged;
}

private void InnerPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "IsTrue")
RaisePropertyChanged("IsInnerTrue");
}
}

或者两个,使用像Update Controls这样的依赖跟踪库.这些库可以检测到 IsInnerTrue 依赖于 IsTrue,并会在内部属性更改时触发顶级属性更改事件。

关于wpf - 嵌套类结构的 PropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9875052/

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