Мой метод навигации в базовом абстрактном классе
public abstract void Navigate(SelectedItemChangedEventArgs e); '
В одном из моих классов просмотра мне нужно иметь более одной навигации, когда какая-либо кнопка нажата или нажата. используя только мою функцию навигации, которую я могу использовать для одной навигации, мне нужно улучшить метод навигации, чтобы он был улучшен, чтобы его можно было использовать для нескольких навигаций. Я немного не понимаю, что мне делать, делать ретрансляционную команду или использовать общий. что мне нужно изменить, чтобы использовать этот метод для нескольких целей навигации
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);
}
Поскольку я использовал функцию навигации в журнале, мне также нужно использовать ее для VitalSigns_tapped. Здесь я чувствую, что продублировал код и не использовал метод должным образом.
Вы имеете в виду в методе навигации в переключателе, какой параметр мне нужно использовать для их разделения
e.SelectedItem - предположительно содержит выбранную страницу? Или вы могли бы просто передать строку вместо этого
Можете ли вы привести пример, я действительно не понял смысла
@ish1104 ish1104 вам действительно нужно использовать несколько навигаций? Почему бы вам не использовать другой тип страницы, например. PopupPage или ModalPage?
Его руководитель проекта последнего года специально попросил обновить функцию навигации, чтобы иметь несколько навигаций. Говорит, чтобы сделать функцию навигации более общей.





Передача страницы 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 и имеет значение такой же, вы также можете объединить его с функцией навигации, например:
public override async void Navigate(Page page)
{
page.BaseViewModel.SelectedPatient = BaseViewModel.SelectedPatient;
await Navigation.PushAsync(page, true);
}
почему бы вам просто не использовать оператор switch в методе Navigate, чтобы определить, какую страницу загружать?