我正在寻找一种方法,只为静态内容使用CarouselView for Xamarin表单。这意味着,我不打算使用任何Itemsource或绑定或其他任何东西。
让我们假设我有三个独立的Stacklayouts(每个都包含几个文本标签和按钮),我希望能够水平滑动它们。像这样的东西(伪代码):
<cv:CarouselView>
<cv:CarouselView.Items>
<CarouselItem>
<StackLayout>
<Label Text="This is step1" />
</StackLayout>
</CarouselItem >
<CarouselItem>
<StackLayout>
<Label Text="This is step2" />
</StackLayout>
</CarouselItem >
<CarouselItem>
<StackLayout>
<Label Text="This is step3" />
</StackLayout>
</CarouselItem >
</cv:CarouselView.Items>
</cv:CarouselView>
如果我可以将我的内容“原样”放在不使用任何动态项目源的情况下,那就太好了。有什么想法吗?
答案 0 :(得分:2)
您可以使用data template selectors选择要显示的视图。
首先,使用所需内容创建内容视图:
<ContentView.Content>
<StackLayout>
<Label Text="Hello Xamarin.Forms!" />
</StackLayout>
</ContentView.Content>
然后创建一个数据模板选择器,并在其中决定应该调用哪个模板:
public DataTemplate Step1 { get; set; }
public DataTemplate Step2 { get; set; }
public DataTemplate Step3 { get; set; }
public HelpPageDataTemplateSelector()
{
Step1 = new DataTemplate(typeof(ContentViewStep1));
Step2 = new DataTemplate(typeof(ContentViewStep2));
Step3 = new DataTemplate(typeof(ContentViewStep3));
}
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
switch ((int)item)
{
case 2: return Step2;
case 3: return Step3;
default: return Step1;
}
}
然后在轮播视图中,设置数据模板选择器并将步骤绑定为项目源(模型中的步骤只是整数数组 - 例如1,2,3):
<ContentPage.Resources>
<ResourceDictionary>
<Selector:TemplateSelector x:Key="TemplateSelector"></Selector:HelpPageDataTemplateSelector>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<Forms:CarouselView ItemTemplate="{StaticResource TemplateSelector}" ItemsSource="{Binding Steps}" />
</ContentPage.Content>
答案 1 :(得分:0)
不要使用动态的,只需在模型或页面构造函数中手动创建List,并将其设置为ItemsSource。
使用x:name="MyCarousel"
声明您的幻灯片项目类:
public class MyItem
{
public string Desc { get; set; }
//put more stufff here
}
在后面的代码中发送你所谓的静态数据:
var MyItems = new List<MyItem>
{
new MyItem
{
Desc = "This is step1",
},
new MyItem
{
Desc = "This is step2",
},
new MyItem
{
Desc = "This is step3",
},
};
MyCarousel.ItemsSource = MyItems;