О Относительный маршрут и Передача данных из общего GIF и кода, возможно, вы что-то ошиблись при их использовании.
если все маршруты в приложении уникальны, навигация может быть выполнена только путем указания уникального имени маршрута в качестве относительного URI:
await Shell.Current.GoToAsync("TargetPageName");
//such as await Shell.Current.GoToAsync("myFolder1Page");
Данные могут передаваться в качестве параметров запроса при выполнении программной навигации.
await Shell.Current.GoToAsync($"TargetPageName?DefinedKeyName={BePassedValue}");
//such as Shell.Current.GoToAsync($"myFolder1Page?name={ValueOfmyFolder1Page}");
Для получения данных класс, представляющий страницу, к которой осуществляется переход, или класс для BindingContext страницы, должен быть украшен QueryPropertyAttribute
для каждого параметра запроса:
[QueryProperty("Name", "name")]
public partial class myFolder1Page: ContentPage
{
public string Name
{
set
{
BindingContext = FolderData.FoldePages.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));
}
}
...
}
Так что здесь ваша проблема, сначала нужно переименовать имя страницы, чтобы соответствовать этому методу маршрута.
например
В MyComputerPage , когда вы переходите на страницу myFolder1 , вы можете зарегистрировать ключ страницы myFolder1 как myFolder1 page.
Тогда, если нет данных:
await Shell.Current.GoToAsync("myFolder1");
Пропускные данные:
await Shell.Current.GoToAsync($"myFolder1?name={ValueOfmyFolder1}");
Когда эта рабочая и следующая страница регистрируются как одна и та же, то заходите на myFolder1 страницу , затем хотите перейти на страницу myFolder1a , следует написать следующее:
await Shell.Current.GoToAsync("myFolder1a");//no data
await Shell.Current.GoToAsync($"myFolder1a?name={ValueOfmyFolder1a}");// pass data
Далее, хотите перейти на страницу myFolder1aX , следует написать следующее:
await Shell.Current.GoToAsync("myFolder1aX");//no data
await Shell.Current.GoToAsync($"myFolder1aX?name={ValueOfmyFolder1aX}");//pass data