C# 使用Prism深入链接到ListView中的行时,如何更新ListView滚动和高亮显示?

C# 使用Prism深入链接到ListView中的行时,如何更新ListView滚动和高亮显示?,c#,listview,xamarin.forms,prism,prism-5,C#,Listview,Xamarin.forms,Prism,Prism 5,我使用的是带棱镜的Xamarin表格 期望的行为 单击深度链接,显示详细视图: 用户按下后退按钮。滚动并突出显示链接的选择(未发生)。 没有任何OnNavigation事件触发。这是虫子吗?我如何做到这一点 App.Xaml public partial class App : PrismApplication { public App(IPlatformInitializer initializer = null) : base(initializer) { } prot

我使用的是带棱镜的Xamarin表格

期望的行为

  • 单击深度链接,显示详细视图:

  • 用户按下后退按钮。滚动并突出显示链接的选择(未发生)。
    没有任何
    OnNavigation
    事件触发。这是虫子吗?我如何做到这一点

  • App.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>();
        }
    
    问题

    • 如何使用“返回”按钮选择列表视图
    • 是否有任何平台指导说明深度链接后的后退按钮必须转到源调用应用程序。。让这个问题变得毫无用处?(例如,将导航弹回到Chrome/Safari)

    您使用的是什么版本的Prism?@BrianLagunas版本6.3 Pre-1。。。尽管我现在正在更新发布版本,因为您已经提到了。INavAware方法应该在硬件/软件按钮上启动,但只在OnNavigatedTo上启动,而不是在OnNavigationTo上启动。此外,您可能需要检查您的数据是否已加载到OnNavigatedTo中。否则,您将总是在后台操作中重新加载数据谢谢Brian,我明天再试。
    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;
                }
            }
        }
    }