我是Xamarin的新手。我正在开发一个现有的代码库,里面有很多页面和视图模型。Xamarin中的一个标准似乎是,视图模型中的每个公共属性都有一个私有变量,并且总是在setter中调用SetProperty。像这样:
private string _myProperty;
public string MyProperty
{
get { return _myProperty; }
set { SetProperty(ref _myProperty, value); }
}
SetProperty做什么?我需要对每一处房产都这样做吗,还是只对一些房产这样做?如果我只使用一个带有默认getter和setter的简单属性,会发生什么?像这样:
public string MyProperty { get; set; }
我的猜测是,它与XAML文件的绑定有关,如果您希望在更改这些属性时更新视图,那么它是必要的。但我在任何地方都没有看到这种解释。
您不必使用它。但这种机制INotifyPropertyChanged
是驱动Xamarin Forms(和其他Microsoft UI堆栈(使用的数据绑定机制的原因。SetProperty
基本上会引发一个事件,通知UI某个属性已更改,如果UI正在显示该属性,则需要刷新。
注意这个
public string MyProperty;
是NOTC#属性。这只是一个field
。CCD_ 4需要CCD_ 5和/或CCD_。仅限的数据绑定适用于公共属性。
谷歌INotifyPropertyChanged
提供了许多关于该界面如何工作以及如何最好地实现它的大量文章
有一个很棒的nuget包,Fody PropertyChanged,它将自动化使用INPC时涉及的大部分样板代码。它适用于Xamarin Forms。