xamarin ContentPage:确定调用它的前一页

时间:2016-08-24 18:36:40

标签: xamarin.forms

我正在调用列出所有经销商的公共页面。当我从列表中选择项目时,我想根据列表页面的调用位置显示下一页。

简短地从第A页,第B页和第C页调用ListPage。

  • 如果从页面A调用ListPage,则在ItemSelection上打开PageA1,
  • 如果从页面B调用ListPage,则在ItemSelection打开PageB1。

无法确定我的上一页/我可以使用this.Parent方法吗?如何?

2 个答案:

答案 0 :(得分:0)

使用默认值将参数传递给主ContentPage的类构造函数。将该值分配给类字段并使用它进行检查。 如果有人有更好的解决方案,请告诉我:)

class DistributorListX : ContentPage
{
   public string previousPage;
   public DistributorListX(string PreviousPage="")
    {
        InitializeComponent();
        previousPage = PreviousPage;
    }
   void listItemSelected(object sender, SelectedItemChangedEventArgs e)
   {
        if (previousPage=="A")
           Navigation.PushAsync(A1);
        else
           Navigation.PushAsync(A2);

   }
}

答案 1 :(得分:-1)

我是Xamarin的新手,并且遇到类似的问题。帮助我使用CountItem[Int32]ModalStack属性的方法,但是NavigationStack的类型也是IReadOnlyList,并且具有相同的属性。所以也许像这样:

var previousPageIndex = Navigation.NavigationStack.Count - 2;
var previousPageType = Navigation.NavigationStack[previousPageIndex];

if (previousPageType.Equals(Xamarin.Forms.NavigationPage)) {
    Navigation.pushAsync(Page1);
} else if (previousPageType.Equals(PROJECT.DIR.CustomNavigationPage)) {
    Navigation.pushAsync(Page2);
}

注意:如果要从相同类型的2个不同页面进入当前页面,则选中previousPageType无济于事。在我的实际情况中,我是否在ModalStack中,所以我只需要检查ModalStack.Count > 0是否确定是弹出页面还是切换选项卡即可。