gpt4 book ai didi

c# - WPF TreeView 更新子项

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:28 27 4
gpt4 key购买 nike

我有一个简单的 TreeView 。项目模板有一个复选框。单击复选框时,我的模型更新了所有子项以反射(reflect)与父项相同的选中状态。这适用于代码,但不会反射(reflect)在树上。我什至添加了大量的 callbakcs、属性更改通知等。

public class OutlookFolder : INotifyPropertyChanged
{
public delegate void CollectionChangedDelegate();
public static CollectionChangedDelegate CollectionChanged;

public string Name { get; set; }
public string ID { get; set; }
private bool _checked;
public bool Checked
{
get { return _checked; }
set { _checked = value; UpdateChildren(value); }
}

private ObservableCollection<OutlookFolder> _Children;
public ObservableCollection<OutlookFolder> Children
{
get { return _Children; }
set { _Children = value; OnPropertyChanged("Children"); }
}

private void UpdateChildren(bool value)
{
if (Children == null) { return; }

foreach (OutlookFolder f in Children)
{
f.Checked = value;
}

if (CollectionChanged != null)
{
CollectionChanged.Invoke();
}
}

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
}
}
}

如您所见,我什至添加了一个在更新子列表后调用的委托(delegate),这会导致 View 模型也调用 OnPropertyChange()

最佳答案

当您更改 Checked 时,您的 OutlookFolder 对象是否实现 PropertyChanged? Collectionchanged 不会仅更新 TreeView 中的单个项目。

关于c# - WPF TreeView 更新子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135812/

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