3 回答
TA贡献1824条经验 获得超8个赞
NotifyPropertyWeaver的作者已弃用该工具,而推荐使用更通用的Fody。(提供了从织布工转变为假肢的人员的迁移指南。)
我用于项目的一个非常方便的工具是Notify Property Weaver Fody。
它会在您的项目中作为构建步骤进行自身安装,并在编译过程中注入引发PropertyChanged事件的代码。
使属性提高PropertyChanged是通过在属性上放置特殊属性来完成的:
[ImplementPropertyChanged]
public string MyProperty { get; set; }
另外,您还可以为依赖于其他属性的属性指定关系
[ImplementPropertyChanged]
public double Radius { get; set; }
[DependsOn("Radius")]
public double Area
{
get { return Radius * Radius * Math.PI; }
}
TA贡献1833条经验 获得超4个赞
Framework 4.5为我们提供了CallerMemberNameAttribute,从而无需将属性名称作为字符串传递:
private string m_myProperty;
public string MyProperty
{
get { return m_myProperty; }
set
{
m_myProperty = value;
OnPropertyChanged();
}
}
private void OnPropertyChanged([CallerMemberName] string propertyName = "none passed")
{
// ... do stuff here ...
}
类似于Svish的解决方案,只是用无聊的框架功能替换了lambda令人敬畏的;-)
如果您正在使用安装了KB2468871的 Framework 4.0进行操作,则可以通过nuget来安装Microsoft BCL兼容性包,该包也提供了此属性。
- 3 回答
- 0 关注
- 575 浏览
添加回答
举报