繁体   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