gpt4 book ai didi

c# - 调用 OnPropertyChange ("property_name") 向所有绑定(bind)属性发送更新

转载 作者:太空宇宙 更新时间:2023-11-03 16:25:23 25 4
gpt4 key购买 nike

所以我有一个包含 40 个左右属性的类,这些属性通过与微 Controller 的通信进行更新。此类实现 INotifyPropertyChanged。

松散的例子:

private int _Example;
public int Example
{
get
{
return _Example;
}
set
{
_Example = value;
OnPropertyChange("Example");
}
}

和 OnPropertyChange 函数:

protected void OnPropertyChange(string p_Property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(p_Property));
}
}

public event PropertyChangedEventHandler PropertyChanged;

绑定(bind)(其中很多)

Second_Class_Control.DataBindings.Clear();
Second_Class_Control.DataBindings.Add("My_Property", FirstClass, "Example");

在主窗体中,我设置了绑定(bind)以显示这些值并对其使用react。其中一个恰好落在另一个类别的另一个属性(property)上。我碰巧在此属性的 set 函数中放置了一个断点,并注意到它在 任何 时间 任何 第一类更改的属性被调用。

这是正确的行为吗?我没有注意到任何性能影响,但我计划让这些类的许多实例一起运行,但没想到会这样。

谢谢

最佳答案

嗯..我注意到你有你的 OnPropertyChange 虚拟。这是为什么,你在某处进行覆盖吗?

我通常这样创建它:

public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}

然后是用法:

public class MainWindowViewModel : ViewModelBase
{
private string name;
public string Name
{
get { return name; }
set { name = value; OnPropertyChanged("Name"); }
}
}

关于c# - 调用 OnPropertyChange ("property_name") 向所有绑定(bind)属性发送更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753603/

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