Carousel Page xamarin表单显示所选项目详细信息

时间:2016-04-26 17:33:27

标签: listview xamarin xamarin.forms navigation carousel

我有这个listView显示了一堆项目,想法是点击一个,导航到旋转木马页面并在那里显示它的详细信息。

问题:轮播页面还必须知道此项目在主列表中的位置,并且OnSlide必须显示此选定项目中的下一个/上一个项目。

已经完成:

  

ListView已成功填充并显示可选项目   OnSelectedItem pushAsync导航到DetailPage并显示其详细信息。

现在问题甚至可以填充轮播页......

已经联系了Xamarin团队,他们很高兴通过向我发送«在这里或论坛,因为他们无法提供帮助»帮助我......(已经尝试过论坛,已经等了将近两个月了:s ,需要提供工作)。

2 个答案:

答案 0 :(得分:1)

在推送DetailPage集CurrentPage之前。

var detailPage = new CarouselPage();
// ...
detailPage.CurrentPage = index;
Navigation.PushAsync(detailPage);

如果您稍后加载项目,只需引入另一个属性。

答案 1 :(得分:1)

我认为“最简单”的方式是使用ListViewCarouselPage(或CarouselView版本2.2+中的Xamarin.Forms)共享相同{ {1}}但是使用嵌入在ItemsSource中的不同DataTemplate,以便您可以推送/弹出CarouselPage free

NavigationPage事件中,您可以将ListView.ItemSelected的{​​{1}}设置为与SelectedItem中所选项目相同,因为它们分享相同的数据源。然后只需将CarouselPage推送到当前页面即可完成....; - )

CarouselPage 2.1使用ListView

Xamarin.Forms

CarouselPage 2.2使用CarouselView预发布:

var carouselPage = new CarouselPage ();
carouselPage.ItemTemplate = new DataTemplate (() => new SaucePage ());
carouselPage.ItemsSource = sauces;

var listView = new ListView (ListViewCachingStrategy.RecycleElement);
listView.ItemTemplate = new DataTemplate (() => new HotSauceCell ());
listView.ItemsSource = sauces;
listView.ItemSelected += (object sender, SelectedItemChangedEventArgs e) => {
    carouselPage.SelectedItem = e.SelectedItem as Sauce;
    (MainPage as NavigationPage).PushAsync (carouselPage, true);
};
MainPage = new NavigationPage (new ContentPage {
    Content = listView
});

结果:

enter image description here

enter image description here

注意:在Xamarin.Forms版本2.2(目前通过预发布Nuget提供)中,我强烈建议使用var carouselView = new CarouselView (); carouselView.ItemTemplate = new DataTemplate (() => new SauceView ()); carouselView.ItemsSource = sauces; var carouselDetailPage = new ContentPage { Content = carouselView }; var listView = new ListView (ListViewCachingStrategy.RecycleElement); listView.ItemTemplate = new DataTemplate (() => new HotSauceCell ()); listView.ItemsSource = sauces; listView.ItemSelected += (object sender, SelectedItemChangedEventArgs e) => { carouselView.Position = sauces.IndexOf (e.SelectedItem as Sauce); (MainPage as NavigationPage)?.PushAsync (carouselDetailPage, true); }; MainPage = new NavigationPage (new ContentPage { Content = listView }); ,它更快,更快,更光滑,更快乐;-)只需将其嵌入首选类型Xamarin.Forms类。

注意:显示的辣酱数据来自https://www.syntaxismyui.com/xamarin-forms-carouselpage-recipe/,我修改了他的样本以使用CarouselView,因此回收和数据绑定是免费的....