簡體   English   中英

Xamarin.Forms變量導航

[英]Xamarin.Forms variable navigation

我目前正在使用Xamarin.Forms為Android開發一個股票控制應用程序。 我還有一個額外的頁面,用於輸入產品ID。 我想在兩個方案中使用該頁面:

  1. 您選擇一種產品以將其添加/從庫存中刪除
  2. 您選擇一種產品告訴辦公室必須訂購新產品

選擇產品后,您將被重定向到:

  1. 情況1的“ DetailStockmovementPage”
  2. 情況2中的“ DetailOrderPage”

問題是,下一頁取決於之前單擊的按鈕 在我的ViewModel中,我有以下代碼可以導航(針對場景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查詢,但是我認為這不是一個好方法。 如何更改要瀏覽的頁面?

您可以將用戶的選擇從第一頁傳遞到他們選擇產品的頁面,然后使用該信息來確定要導航到的頁面。 例如:

在您的App.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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM