我有一个TEntity类,它绑定到View:
public class TEntity
{
private string _name;
public string Name
{
get {return _name;}
set {_name = value; NotifyPropertyChanged("Name");}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if(PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
我没有在我的代码中的任何地方订阅 PropertyChanged 事件,但每当我更改名称属性的值时,事件处理程序都会订阅 PropertyChanged 事件。我没有在我的代码中创建任何处理程序。如何创建和订阅该处理程序?
答案 0 :(得分:0)
您的代码实现了事件'PropertyChanged'的提升,而不是订阅。
您的代码的使用者可以订阅该事件,并提供处理程序。
e.g。
public class DisplayEntiry
{
public void Initialize()
{
var entity = new Entity();
entity.PropertyChanged += DisplayName;
entity.Name = "Alan Bennett";
// This will cause DisplayName to write "Alan Bennett" to the console
}
private void DisplayName(object sender, PropertyChangedEventArgs e)
{
Console.Writeline(e.Name);
}
}