为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
饮歌长啸 2022-12-04 13:51:22
我在基本抽象类中的导航方法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。在这里我觉得我复制了代码并且没有正确使用该方法
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

将页面传递给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);

    }


查看完整回答
反对 回复 2022-12-04
  • 1 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号