使用公共成员而不是字符串C#调用PropertyChange
本文关键字:字符串 调用 PropertyChange 成员 | 更新日期: 2023-09-27 18:29:19
我在网上四处寻找,但无法轻松找到解决方案。这可能在一定程度上是因为我不确定要搜索的术语。
我想知道是否有一种方法可以使用属性成员名称来调用PropertyChanged事件,比如…
private string height;
public string Height
{
get { return name; }
set
{
Set(ref height, value);
RaisePropertyChanged( ()=> Name);
}
}
而不是使用这里可以看到的实际字符串。。
private string height;
public string Height
{
get { return name; }
set
{
Set(ref height, value);
RaisePropertyChanged("Name");
}
}
引发事件
protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
我试过解决这个问题,但没能得出结论。我知道有一些方法,我相信还有更现代的方法可以做到这一点。2016年!!
由于您似乎在使用C#6,因此可以使用nameof
运算符,该运算符在编译时解析引用属性的名称,并将字符串传递给方法。
RaisePropertyChanged(nameof(Name));
如果需要使用早期的C#编译器,可以通过lambda表达式解析属性的名称;这就是Entity Framework为其CCD_ 2操作符所做的。您可以定义一个GetPropertyName
实用程序方法(参见示例),然后这样调用它:
RaisePropertyChanged(GetPropertyName(() => Name));