Xamarin.Forms 变量导航



我目前正在使用Xamarin.Forms为Android制作一个股票控制应用程序。 我有一个额外的页面,仅用于输入Pruduct ID。我想在两种情况下使用该页面:

  1. 您选择一种产品以添加/删除它们
  2. 您选择一种产品来告诉办公室必须订购新产品

选择产品后,您将被重定向到:

  1. 案例 1 中的"详细库存运动页面">
  2. 案例 2 中的"详细信息订单页面">

问题是,下一个页面取决于之前单击的按钮。 在我的视图模型中,我有以下代码要导航(对于场景 1):

public async Task GoToNextPage(Product product)
{
await Navigation.PushAsync(new DetailStockmovementPage(product), true);
}

如何使下一个页面变量?我可以在我的 ViewModel 中定义一个变量"NextPage",从视图中设置它,例如"vm.NextPage = DetailStockmovementPage",然后像导航一样导航

public async Task GoToNextPage(Product product)
{
await Navigation.PushAsync(new NextPage(product), true);
}

我知道这是行不通的,但我认为糟糕的尝试清楚地表明了我想要实现的目标。我的意思是我可以为每个页面推送一个字符串并在导航之前进行 if 查询,但我认为这不是一个好方法。如何更改要导航到的页面?

您可以将用户的选择从第一页传递到他们选择产品的页面,然后使用该信息来决定导航到哪个页面。例如:

在应用中.cs添加一个枚举:

public enum NavTarget
{
Order,
Stockmovement
}

在 VM 中为菜单页中选择的目标定义属性:

public NavTarget Target { get; set; }

。并在导航方法中使用它:

public async Task GoToNextPage(Product product)
{
if (Target == NavTarget.Stockmovement)
await Navigation.PushAsync(new DetailStockmovementPage(product), true);
else
await Navigation.PushAsync(new WhateverItsCalledPage(product), true);
}

然后在 ProductSelectionPage 的构造函数中设置该属性:

public ProductSelectionPage(NavTarget target)
{
InitializeComponent();
// some code that sets the VM for this page
// ...
vm.Target = target;
}

相关内容

  • 没有找到相关文章

最新更新