需要修改导航方法以便有多个导航

我在基本抽象类中的导航方法


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 中使用了 Navigate Function,所以我也需要它用于 VitalSigns_tapped。在这里我觉得我复制了代码并且没有正确使用该方法


饮歌长啸
浏览 67回答 1
1回答

慕桂英3389331

将页面传递给Navigate function将使导航功能更加通用。下次您想导航新页面时,只需将新页面传递给它即可。&nbsp; &nbsp; private void JournalSelected(object sender, SelectedItemChangedEventArgs e)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if (e?.SelectedItem == null) return;&nbsp; &nbsp; &nbsp; &nbsp; JournalGroupList.SelectedItem = null;&nbsp; &nbsp; &nbsp; &nbsp; JournalHistoryViewPage journalHistoryViewPage = App.Container.Resolve<JournalHistoryViewPage>();&nbsp; &nbsp; &nbsp; &nbsp; journalHistoryViewPage.BaseViewModel.JournalGroup = e.SelectedItem as JournalGroup;&nbsp; &nbsp; &nbsp; &nbsp; journalHistoryViewPage.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;&nbsp; &nbsp; &nbsp; &nbsp; Navigate(journalHistoryViewPage);&nbsp; &nbsp; }&nbsp; &nbsp; private async void VitalSigns_Tapped(object sender, System.EventArgs e)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var vitalSignsViewPage = App.Container.Resolve<VitalSignsViewPage>();&nbsp; &nbsp; &nbsp; &nbsp; vitalSignsViewPage.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;&nbsp; &nbsp; &nbsp; &nbsp; Navigate(vitalSignsViewPage);&nbsp; &nbsp; }&nbsp; &nbsp; public override async void Navigate(Page&nbsp; page)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; await Navigation.PushAsync(page, true);&nbsp; &nbsp; }如果每个页面都有一个BaseViewModel.SelectedPatient和 具有相同的值,你也可以将它组合成 Navigate 函数,例如:public override async void Navigate(Page&nbsp; page)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; page.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;&nbsp; &nbsp; &nbsp; &nbsp; await Navigation.PushAsync(page, true);&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP