【发布时间】:2020-10-28 22:49:24
【问题描述】:
我有一个名为 Mod 的课程:
class Mod : INotifyPropertyChanged
{
private bool serverSideChecked;
private string name;
public bool ServerSideChecked
{
get => serverSideChecked;
set
{
serverSideChecked = value;
RaisePropertyChanged("ServerSideChecked");
}
}
public string Name
{
get => name;
set
{
name = value;
RaisePropertyChanged("Name");
}
}
}
还有一个名为 Profile 的类,其中包含一个 Mod 列表
class ServerProfileNew : INotifyPropertyChanged
{
public int ServerModsChecked { get => Mods.Where(m => m.ServerSideChecked == true).Count(); }
private List<Mod> _mods = new List<Mod>();
public List<Mod> Mods
{
get => _mods;
set
{
_mods = value;
RaisePropertyChanged("Mods");
}
}
}
这两个类都实现了 INotifyPropertyChanged。
我需要Profile 中的ServerModsChecked 来更新ServerSideChecked 在Mod 中的更改,以便实时查看已检查模块的总数。
这可能吗?怎么做?
【问题讨论】:
-
在
Mods设置器中,将 PropertyChanged 事件处理程序附加到 _mods 中的每个元素。在该处理程序中,调用RaisePropertyChanged("ServerModsChecked");。之前不要忘记将处理程序与当前_mods集合中的元素分离。 -
我实际上是在将 Mod 添加到列表时尝试附加 PropertyChanged,但它每次触发大约 4 次...我会尝试你的 dais 但我不完全理解你所说的分离是什么意思来自 _mods 的处理程序
-
请看答案。
标签: c# wpf mvvm data-binding inotifypropertychanged