Xamarin.Forms 中未触发 OnNavigatedTo() 方法
OnNavigatedTo() method is not triggered in Xamarin.Forms
我从 INavigateAware 界面继承了我的视图模型 class,如下所示,
public class ViewModel : INavigationAware
{
public ViewModel()
{
}
public void OnNavigatedFrom(NavigationParameters parameters)
{
}
public void OnNavigatedTo(NavigationParameters parameters)
{
// some codes
}
}
并在关联视图(我导航到的页面)中调用该视图模型
public partial class Page1 : ContentPage
{
ViewModel viewModel;
public Page1()
{
InitializeComponent();
viewModel = new ViewModel();
this.Content = myview; //myview is my control like grid
}
}
现在我的问题是,当我导航到此页面 (Page1) 时,未触发 ViewModel 中的 OnNavigateTo() 方法。请有人帮助我如何触发 OnNavigateTo() 方法。
提前致谢。
首先,检查页面中的 AutowireViewModel 参数是否 class 设置为 True。
其次,你不应该自己分配视图模型,当你调用 PushViewModel 时,Prism 会为你做这件事
第三,棱镜有一个众所周知的局限性:
https://github.com/PrismLibrary/Prism/issues/563
还有建议的解决方法:
创建接口:
public interface IPageNavigationAware
{
void OnAppearing();
void OnDisappearing();
}
从此界面派生您的 ViewModel class。
在后面的Views代码中:
protected override void OnAppearing()
{
(BindingContext as IPageNavigationAware)?.OnAppearing();
}
protected override void OnDisappearing()
{
(BindingContext as IPageNavigationAware)?.OnDisappearing();
}
问题在于 OnAppearing/OnDissapparing 不是可靠的导航方法并且不接受参数,而是页面生命周期方法。它们不指示页面何时被导航到或离开。您可以有一个父页面可以与多个子页面同时出现的实例。这将在 Xamarin 提供适当的导航时得到解决 API.
我从 INavigateAware 界面继承了我的视图模型 class,如下所示,
public class ViewModel : INavigationAware
{
public ViewModel()
{
}
public void OnNavigatedFrom(NavigationParameters parameters)
{
}
public void OnNavigatedTo(NavigationParameters parameters)
{
// some codes
}
}
并在关联视图(我导航到的页面)中调用该视图模型
public partial class Page1 : ContentPage
{
ViewModel viewModel;
public Page1()
{
InitializeComponent();
viewModel = new ViewModel();
this.Content = myview; //myview is my control like grid
}
}
现在我的问题是,当我导航到此页面 (Page1) 时,未触发 ViewModel 中的 OnNavigateTo() 方法。请有人帮助我如何触发 OnNavigateTo() 方法。
提前致谢。
首先,检查页面中的 AutowireViewModel 参数是否 class 设置为 True。
其次,你不应该自己分配视图模型,当你调用 PushViewModel 时,Prism 会为你做这件事
第三,棱镜有一个众所周知的局限性: https://github.com/PrismLibrary/Prism/issues/563
还有建议的解决方法:
创建接口:
public interface IPageNavigationAware
{
void OnAppearing();
void OnDisappearing();
}
从此界面派生您的 ViewModel class。 在后面的Views代码中:
protected override void OnAppearing()
{
(BindingContext as IPageNavigationAware)?.OnAppearing();
}
protected override void OnDisappearing()
{
(BindingContext as IPageNavigationAware)?.OnDisappearing();
}
问题在于 OnAppearing/OnDissapparing 不是可靠的导航方法并且不接受参数,而是页面生命周期方法。它们不指示页面何时被导航到或离开。您可以有一个父页面可以与多个子页面同时出现的实例。这将在 Xamarin 提供适当的导航时得到解决 API.