gpt4 book ai didi

c# - Mvvm 取消选中底层 Listbox 对象中的选中框

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

我有一个 ListView ,它的项目源数据绑定(bind)到自定义数据类型的可观察集合。列表中的每个对象都具有 DisplayName (string) 和 IsChecked (bool) 等属性。数据模板本质上是:

<CheckBox VerticalAlignment="Center"
Content="{Binding DisplayName}"
IsChecked="{Binding IsChecked}"/>

当我选中这些框时,我能够轻松地确定现在已选中的基础项目。但是在 View 模型中,如果我想取消选中一个项目,它似乎无法以其他方式工作。

我在可观察集合的 setter 中实现了 NotifyProperty 更改,但是我需要为 bool 做一些特别的事情吗?

在 Viewmodel 中,以下代码是我尝试取消选中复选框的地方(作为命令运行后的刷新):
foreach (var bill in AllBills)
{
bill.IsChecked = false;
}

最佳答案

I have NotifyProperty change implemented in the setter for the observable collection, but do i need to do something special for the bool?



是的。当你给你的集合属性一个新集合时,你提出了 PropertyChanged对于那个属性。这与集合中项目的属性值更改有什么关系?什么都没有。当您设置 IsChecked在其中一项上,是否有任何可以想象的方式让该代码为您的集合属性命中 setter?没有。

您在集合中的项目必须自己实现 INotifyPropertyChanged ,以及 IsChecked 的 setter 必须提高 PropertyChangedIsChecked 的值变化。如果您为 collection 属性执行此操作,我希望您已经知道如何操作。但是,如果您遇到任何障碍,请向我发表评论。

WPF 学习曲线中最困难的部分之一是在 secret 框架彩虹小马魔术刚刚发生的事情和你必须自己做的事情之间建立一种可靠的直观感觉。那个边界上的一个点就是你现在站立的地方。

关于c# - Mvvm 取消选中底层 Listbox 对象中的选中框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42911584/

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