【发布时间】:2015-06-08 20:43:22
【问题描述】:
要在 WPF 中实现数据绑定,根据 MS 的说法,“类需要提供适当的属性更改通知”。 [ref here]
AFAIK,设置的一部分意味着采取以下步骤,如果尚未在课堂上设置(参考 MSDN 上的 this article):
- 属性发生变化时,需要调用方法来引发事件。
- 这意味着必须更改自动实现的属性,以便它们使用私有支持字段,因此
set可以更改属性并调用方法来引发事件。
- 这意味着必须更改自动实现的属性,以便它们使用私有支持字段,因此
- 该类需要实现 INotifyPropertyChanged。
- 该类需要声明PropertyChangedEventHandler事件。
- 需要以如下方式引发事件:
...
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
如果我已经有许多不采取任何这些步骤的现有课程,那么更改这些课程的最佳方法是什么,以便它们仅在使它们符合这些标准所需的范围内进行更改 ?
【问题讨论】:
-
需要变量
handler有什么特别的原因吗? -
@O.R.Mapper 这是用于以线程安全方式引发事件的标准 C# 模式(至少在 C#6 之前)。 Eric Lippert 解释了所有here。
-
澄清一下,我知道如何手动实现这一点,但希望有更多类似 DRY 的东西。
-
@Olly:很有趣,谢谢。在我读过的任何 C# 书籍中都没有遇到过这种情况(尽管所有这些都是在 C# 的早期编写的)。