我在使用 mvvm 理解 xaml 時(shí)遇到了一些問(wèn)題。有時(shí)工作,但其他人沒(méi)有。ViewModel(實(shí)現(xiàn) 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;在視圖構(gòu)造函數(shù)中:vm = new ViewModel(id);BindingContext = vm;OnAppearing(異步):base.OnAppearing();await vm.LoadDataAsync();lAddress.SetBinding(Label.TextProperty, new Binding("Address");如果我在 xaml 中設(shè)置 BindingContext 并將其從構(gòu)造函數(shù)中刪除,則它不起作用。如果我在 xaml 中的地址標(biāo)簽上設(shè)置綁定并將其從后面的代碼中刪除,則它不起作用。如果我嘗試使用 Name 作為頁(yè)面的標(biāo)題,它不起作用。在任何這些情況下,我都沒(méi)有收到任何錯(cuò)誤,例如“綁定:在 BindingContext 上找不到屬性”,所以我知道它們正在被找到,但也許它們是空的。如果我修改 Class1 中的屬性,它不會(huì)出現(xiàn)在頁(yè)面上。我可以假設(shè)原因是 Class 沒(méi)有實(shí)現(xiàn) INotifyPropertyChanged 嗎?在 VM 構(gòu)造函數(shù) (Task.Run) 或 Page.OnAppearing(await vm.LoadData()) 中加載數(shù)據(jù)是更好還是可取?有人可以提供一些指導(dǎo)嗎?
3 回答

holdtom
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
我認(rèn)為問(wèn)題出在這里:
OnAppearing(異步):
base.OnAppearing();
lAddress.SetBinding(Label.TextProperty, new Binding("Address");
await vm.LoadDataAsync();
您必須在方法調(diào)用之前設(shè)置綁定。
- 3 回答
- 0 關(guān)注
- 216 瀏覽
添加回答
舉報(bào)
0/150
提交
取消