将Prism用于DeepLink到ListView中的行时,如何更新ListView滚动并突出显示?

时间:2017-05-01 16:20:07

标签: c# listview xamarin.forms prism prism-5

我正在使用Xamarin Forms with Prism,based on this GitHub sample.

所需行为

  1. 点击深层链接,显示详细信息视图:

    enter image description here

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

    enter image description here

  3. 的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>();
        }
    

    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)

0 个答案:

没有答案