我正在开发Xamarin表单应用程序,我的当前页面的ViewModel数据实例在我的Base ViewModel中反序列化为正确的类型。 My Base ViewModel还实现了INotifiyPropertyChangedInterface。已序列化的视图模型数据包含具有正确数据的属性。
由于实现了INotifiyPropertyChangedInterface,我希望它能自动绑定。但没有任何反应。我还需要做进一步的事吗?如果您需要任何进一步的信息来帮助我,请询问。除了反序列化json之外,我可以粘贴的代码不多。
答案 0 :(得分:0)
你的课应该是这样的:
public class Person : INotifyPropertyChanged
{
private string nameValue = string.Empty;
public event PropertyChangedEventHandler PropertyChanged;
public string Name
{
get
{
return nameValue;
}
set
{
if (value != nameValue)
{
nameValue = value;
NotifyPropertyChanged();
}
}
}
// This method should be called by the Set accessor of each property.
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
注意它是如何实现INotifyPropertyChanged
接口的,并在设置值时调用正确的方法。如果不这样做,将导致UI无法更新。
现在要绑定您的值,请在页面上的某个位置的XAML中执行此操作:<Label Text="{Binding Name}" />
。最后,您必须设置页面的BindingContext
属性,如下所示:
public MyPage : ContentPage
{
public MyPage()
{
var person = new Person();
person.Name = "Bert";
BindingContext = person;
person.Name = "Ernie";
}
}
要取出样板代码并在每个属性上调用PropertyChanged
方法,请查看PropertyChanged.Fody plugin。