gpt4 book ai didi

xaml - Xamarin 表格 : CarouselView for static content

转载 作者:行者123 更新时间:2023-12-03 14:39:31 26 4
gpt4 key购买 nike

我正在寻找一种将 CarouselView 用于仅具有静态内容的 Xamarin 表单的方法。这意味着,我不打算使用任何 Itemsource 或绑定(bind)或其他任何东西。

假设我有三个独立的 Stacklayout(每个 Stacklayout 都包含几个文本标签和按钮),并且我希望能够水平滑动它们。像这样的东西(伪代码):

<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>

如果我可以“按原样”放置我的内容而不使用任何动态项目源,那就太好了。有任何想法吗?

最佳答案

您可以使用data template selectors用于选择要显示的 View 。

首先,创建具有所需内容的内容 View :

<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;
}
}

然后在轮播 View 中,设置数据模板选择器并将步骤绑定(bind)为项目源(模型中的步骤只是整数数组 - 例如 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>

关于xaml - Xamarin 表格 : CarouselView for static content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com