簡體   English   中英

需要修改導航方法才能有多個導航

[英]Need to Modifify the navigation method in order to have more navigation than one

我在基礎抽象類中的導航方法

public abstract void Navigate(SelectedItemChangedEventArgs e); '

在我的一個 View 類中,當單擊或點擊某個按鈕時,我需要有多個導航。 僅使用我的導航功能我可以用於一個導航我需要改進導航方法以進行改進以便它可以用於多個導航。 我在這里有點無能為力,我應該怎么做中繼命令或使用泛型。 為了將此方法用於多種導航目的,我需要更改什么

 private void JournalSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e?.SelectedItem == null) return;
        JournalGroupList.SelectedItem = null;
        Navigate(e);
    }

    public override async void Navigate(SelectedItemChangedEventArgs e)
    {
        JournalHistoryViewPage journalHistoryViewPage = App.Container.Resolve<JournalHistoryViewPage>();
        journalHistoryViewPage.BaseViewModel.JournalGroup = e.SelectedItem as JournalGroup;
        journalHistoryViewPage.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;
        await Navigation.PushAsync(journalHistoryViewPage, true);
    }

  private async void VitalSigns_Tapped(object sender, System.EventArgs e)
    {
        var vitalSignsViewPage = App.Container.Resolve<VitalSignsViewPage>();
        vitalSignsViewPage.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;
        await Navigation.PushAsync(vitalSignsViewPage, true);
    }

由於我在 journalselected 中使用了導航功能,因此我也需要將它用於 VitalSigns_tapped。 在這里我覺得我重復了代碼並且沒有正確使用該方法

將頁面傳遞給Navigate function將使導航功能更加通用。 下次要導航新頁面時,只需將新頁面傳遞給它即可。

    private void JournalSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e?.SelectedItem == null) return;
        JournalGroupList.SelectedItem = null;

        JournalHistoryViewPage journalHistoryViewPage = App.Container.Resolve<JournalHistoryViewPage>();
        journalHistoryViewPage.BaseViewModel.JournalGroup = e.SelectedItem as JournalGroup;
        journalHistoryViewPage.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;

        Navigate(journalHistoryViewPage);
    }

    private async void VitalSigns_Tapped(object sender, System.EventArgs e)
    {
        var vitalSignsViewPage = App.Container.Resolve<VitalSignsViewPage>();
        vitalSignsViewPage.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;

        Navigate(vitalSignsViewPage);
    }

    public override async void Navigate(Page  page)
    {        
        await Navigation.PushAsync(page, true);
    }

如果每個頁面都有一個BaseViewModel.SelectedPatient並且具有相同的值,您也可以將其合並為 Navigate 函數,例如:

public override async void Navigate(Page  page)
    {        
        page.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;
        await Navigation.PushAsync(page, true);
    }

暫無
暫無

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

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