我在使用 mvvm 理解 xaml 时遇到了一些问题。有时工作,但其他人没有。
ViewModel(实现 INotifyPropertyChanged):
private Class1 firstClass;
public Class1 FirstClass{
get{return firstClass;}
set{firstClass = value; OnPropertyChanged();}
}
private string name;
public string Name{
get{return name;}
set{name = value; OnPropertyChanged();}
}
private string address;
public string Address{
get{return address;}
set{address = value; OnPropertyChanged();}
}
看法:
private ViewModel vm;
在视图构造函数中:
vm = new ViewModel(id);
BindingContext = vm;
OnAppearing(异步):
base.OnAppearing();
await vm.LoadDataAsync();
lAddress.SetBinding(Label.TextProperty, new Binding("Address");
如果我在 xaml 中设置 BindingContext 并将其从构造函数中删除,则它不起作用。
如果我在 xaml 中的地址标签上设置绑定并将其从后面的代码中删除,则它不起作用。
如果我尝试使用 Name 作为页面的标题,它不起作用。
在任何这些情况下,我都没有收到任何错误,例如“绑定:在 BindingContext 上找不到属性”,所以我知道它们正在被找到,但也许它们是空的。
如果我修改 Class1 中的属性,它不会出现在页面上。我可以假设原因是 Class 没有实现 INotifyPropertyChanged 吗?
在 VM 构造函数 (Task.Run) 或 Page.OnAppearing(await vm.LoadData()) 中加载数据是更好还是可取?
有人可以提供一些指导吗?
holdtom
相关分类