0

我正在使用带有 Prism 的 Xamarin Forms,基于此 GitHub 示例。.

期望的行为

  1. 单击深层链接,显示详细视图:

    在此处输入图像描述

  2. 用户按下返回按钮。滚动并突出显示链接的选择(未发生)。
    没有任何OnNavigation事件正在触发。这是一个错误吗?我该如何做到这一点?

    在此处输入图像描述

应用程序.Xaml

public partial class App : PrismApplication
{
    public App(IPlatformInitializer initializer = null) : base(initializer) { }

    protected override async void OnInitialized()
    {
        InitializeComponent();

        await NavigationService.NavigateAsync("MainTabbedPage/NavigationPage/ShowsListPage/DetailPage?show=279121");
        //await NavigationService.NavigateAsync("MainTabbedPage/NavigationPage/ShowsListPage");
    }

    protected override void RegisterTypes()
    {
        Container.RegisterTypeForNavigation<UpcomingShowsPage>();
        Container.RegisterTypeForNavigation<ShowsListPage>(); // <-- Problematic ListView
        Container.RegisterTypeForNavigation<DetailPage>();
        Container.RegisterTypeForNavigation<MainTabbedPage>();
        Container.RegisterTypeForNavigation<NavigationPage>();
        Container.RegisterType<ITsApiService, TsApiService>();
    }

ShowsListPage.xaml

ContentPage 正在使用 Prism 指令:prism:ViewModelLocator.AutowireViewModel="True". (没什么特别的)

ShowsListPageViewModel.cs

using System.Collections.ObjectModel;
using InfoSeries.Core.Models;
using InfoSeries.Core.Services;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Navigation;
using Xamarin.Forms;

namespace DeepNavigation.ViewModels
{
    public class ShowsListPageViewModel : BindableBase, INavigationAware
    {
        private readonly ITsApiService _tsApiService;
        private readonly INavigationService _navigationService;
        private ObservableCollection<SerieFollowersVM> _highlightSeries;

        public ObservableCollection<SerieFollowersVM> HighlightSeries
        {
            get { return _highlightSeries; }
            set { SetProperty(ref _highlightSeries, value); }
        }


        public ShowsListPageViewModel(ITsApiService tsApiService, INavigationService navigationService)
        {
            _tsApiService = tsApiService;
            _navigationService = navigationService;
        }

        public void OnNavigatedFrom(NavigationParameters parameters)
        {

        }

        public async void OnNavigatedTo(NavigationParameters parameters)
        {
            var series = await _tsApiService.GetStatsTopSeries();
            HighlightSeries = new ObservableCollection<SerieFollowersVM>(series);
        }

        public void OnNavigatingTo(NavigationParameters parameters)
        {

        }

        private DelegateCommand<ItemTappedEventArgs> _goToDetailPage;

        public DelegateCommand<ItemTappedEventArgs> GoToDetailPage
        {
            get
            {
                if (_goToDetailPage == null)
                {
                    _goToDetailPage = new DelegateCommand<ItemTappedEventArgs>(async selected =>
                    {
                        NavigationParameters param = new NavigationParameters();
                        var serie = selected.Item as SerieFollowersVM;
                        param.Add("show", serie.Id);
                        await _navigationService.NavigateAsync("DetailPage", param);
                    });
                }

                return _goToDetailPage;
            }
        }
    }
}

问题

  • 如何获得后退按钮来选择列表视图?
  • 是否有任何平台指导说深层链接后的后退按钮必须转到源调用应用程序.. 使这个问题无用?(例如将导航弹出回 Chrome/Safari)
4

0 回答 0