为了账号安全,请及时绑定邮箱和手机立即绑定

Xamarin 表单 (MVVM) 中的绑定问题

Xamarin 表单 (MVVM) 中的绑定问题

C#
芜湖不芜 2021-06-02 16:51:42
我在使用 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()) 中加载数据是更好还是可取?有人可以提供一些指导吗?
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我认为问题出在这里:


OnAppearing(异步):


base.OnAppearing();

lAddress.SetBinding(Label.TextProperty, new Binding("Address");

await vm.LoadDataAsync();

您必须在方法调用之前设置绑定。


查看完整回答
反对 回复 2021-06-05
  • 3 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信