导航时,ViewModel的属性变为null

时间:2018-02-25 15:07:02

标签: xamarin mvvm xamarin.forms

我有两个页面,它们共享相同的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)都变为空。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您的Page2可能没有将BindingContext设置为相同的ViewModel。将ViewModel作为参数传递给Page2构造函数,因此您可以像PushAsync(new Page2(this))一样调用它。

public Page2(ViewModel viewModel)
{
    InitializeComponent();
    BindingContext = viewModel;
}