我有这个listView显示了一堆项目,想法是点击一个,导航到旋转木马页面并在那里显示它的详细信息。
问题:轮播页面还必须知道此项目在主列表中的位置,并且OnSlide必须显示此选定项目中的下一个/上一个项目。
已经完成:
ListView已成功填充并显示可选项目 OnSelectedItem pushAsync导航到DetailPage并显示其详细信息。
现在问题甚至可以填充轮播页......
已经联系了Xamarin团队,他们很高兴通过向我发送«在这里或论坛,因为他们无法提供帮助»帮助我......(已经尝试过论坛,已经等了将近两个月了:s ,需要提供工作)。
答案 0 :(得分:1)
在推送DetailPage集CurrentPage
之前。
var detailPage = new CarouselPage();
// ...
detailPage.CurrentPage = index;
Navigation.PushAsync(detailPage);
如果您稍后加载项目,只需引入另一个属性。
答案 1 :(得分:1)
我认为“最简单”的方式是使用ListView
和CarouselPage
(或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
});
注意:在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
,因此回收和数据绑定是免费的....