我有两个页面,它们共享相同的ViewModel。我这样做是为了在从Page1导航到Page2时处理相同的数据。 导航到Page2时我需要的数据是第1页条目的文本,这些条目绑定到ViewModel。 Page1构造函数:
public Page1()
{
InitializeComponent();
this.BindingContext = new ViewModel(this.Navigation);
}
在Page1的XAML中:
<Entry Text="{Binding Entry1TextFromPage1}"/>
<Entry Text="{Binding Entry2TextFromPage1}"/>
在ViewModel中我做:
public ViewModel(INavigation navigation)
{
this.Navigation = navigation;
this.ButtonOnPage1Command = new Command( async () =>
await this.Navigation.PushAsync(new Page2());
);
this.ButtonOnPage2Command = new Command( async () =>
Use(this.Entry1TextFromPage1); //Here the text is null
Use(this.Entry2TextFromPage1); //Here the text is null
);
}
所有绑定的文本条目(来自Page1)都变为空。我错过了什么?
答案 0 :(得分:0)
您的Page2可能没有将BindingContext
设置为相同的ViewModel。将ViewModel作为参数传递给Page2构造函数,因此您可以像PushAsync(new Page2(this))
一样调用它。
public Page2(ViewModel viewModel)
{
InitializeComponent();
BindingContext = viewModel;
}