是否可以触发OnPropertyChanged事件而不在ViewModel上的属性的setter中明确地调用它?

时间:2016-12-15 01:10:13

标签: c# mvvm xamarin xamarin.forms viewmodel

在我的场景中,每次更改属性时,我都要触发OnPropertyChanged事件

是否可以编写自动执行的ViewModel,也可以在属性值发生变化时传递nameof(property)?

提前致谢。

2 个答案:

答案 0 :(得分:1)

Fody允许您使用属性连接INotifyPropertyChanged,而不必在每个setter中显式调用它。

[ImplementPropertyChanged]
public class Person 
{        
    public string GivenNames { get; set; }
    public string FamilyName { get; set; }
}

答案 1 :(得分:1)

是否可以在不编写代码的情况下触发PropertyChanged事件? 虽然您必须使用第三方库来注入名为Fody的呼叫。您可以在https://github.com/Fody/PropertyChanged

找到它

如果您愿意编写 little 代码,可以将其放在基类中(C#6用于?。而System.Runtime.CompilerServices需要CallerMemberName) :

protected void OnPropertyChanged([CallerMemberName]string propertyName = "")
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventargs(propertyName));
}

所以在你的财产制定者中你只需要

set
{
   backingField = value;
   OnPropertyChanged();
}