gpt4 book ai didi

c# - ObservableCollection 条件计数

转载 作者:行者123 更新时间:2023-12-03 10:22:29 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





WPF Binding Problem

(3 个回答)


2年前关闭。




我认为这应该很简单,但不敢相信该怎么做。

我尝试在标签中绑定(bind)具有他的属性的对象的计数 isWorking设置为 True
这里是我的收藏。

public readonly ObservableCollection<ComputerModel.ControleData> _ComputerList =
new ObservableCollection<ComputerModel.ControleData>();
public ObservableCollection<ComputerModel.ControleData> ComputerList { get { return _ComputerList; } }

我在标签中需要的结果就像
int workingItems= ComputerList.Where(x=> x.isWorking == true).Count()

然后在标签中绑定(bind)
<Label Content="{Binding workingItems}" HorizontalAlignment="Left" Margin="12,424,0,0" VerticalAlignment="Top" Height="22" Width="62"/>

但是让这个工作的正确方法是什么?我不能在 WPF 本身中有条件?

最佳答案

您可以创建一个 get-only 属性

public int WorkingItems
{
get { return ComputerList.Where(x=> x.isWorking == true).Count(); }
}

现在您需要调用 INotifyPropertyChanged 的实现任何时候 isWorking ComputerList 内的属性或列表本身发生变化。

以下是一些伪代码,可让您了解通知任何可能的更新需要考虑的内容。是 不推荐也不完整像这样处理通知。
ComputerList.CollectionChanged += (s, e) => NotifyPropertyChanged("WorkingItems");
this.PropertyChanged += (s, e) => { if (e.PropertyName == "ComputerList") NotifyPropertyChanged("WorkingItems"); };
foreach (var item in ComputerList)
{
item.PropertyChanged += (s, e) => { if (e.PropertyName == "isWorking") NotifyPropertyChanged("WorkingItems"); };
}

关于c# - ObservableCollection 条件计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42810621/

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