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

时间:2018-05-10 14:47:21

标签: c# mvvm binding xamarin.forms visual-studio-mac

我在使用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;

在View构造函数中:

vm = new ViewModel(id);
BindingContext = vm;

OnAppearing(async):

base.OnAppearing();
await vm.LoadDataAsync();
lAddress.SetBinding(Label.TextProperty, new Binding("Address");
  • 如果我在xaml中设置BindingContext并从中删除它 构造函数,它不起作用。

  • 如果我在xaml中的地址标签上设置了绑定并将其从后面的代码中删除,则它不起作用。

  • 如果我尝试使用Name作为页面的标题,则它不起作用。

  • 在任何这些情况下,我都没有收到任何错误,如BindingContext' BindingContext'所以我知道他们被发现但也许他们是空的。

  • 如果我从Class1修改属性,它不会出现在页面上。 我可以假设原因是Class没有实现 INotifyPropertyChanged的?

  • 在VM构造函数(Task.Run)或Page.OnAppearing(等待vm.LoadData())上使用LoadData是更好还是可取?

有人可以提供一些指导吗?

编辑:

XAML code (sorry, could not add the code itself)

1 个答案:

答案 0 :(得分:0)

我认为问题在于:

OnAppearing(async):

dayofweek

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