可以在另一个 CarouselView 中放置一个 CarouselView 吗?

Posted

技术标签:

【中文标题】可以在另一个 CarouselView 中放置一个 CarouselView 吗?【英文标题】:Can you place a CarouselView in another CarouselView? 【发布时间】:2022-01-08 12:22:06 【问题描述】:

我想在第一个 CarouselView 中放置 2 个 ContentView,但是我想在第二个 ContentView 中放置另一个 CarouselView。

下面的代码给了我一个“值不能为空”。当我从它构建的第二个 CarouselView 中删除 ItemTemplate 时,然后我在第二个 ContentView 上得到它(见图)。

<CarouselView x:Name="outerCarousel">
        <CarouselView.ItemsSource>
            <x:Array Type="x:Type ContentView">
                <ContentView>
                    <ContentView.Content>
                        <Frame BackgroundColor="Red" />
                    </ContentView.Content>
                </ContentView>
                <ContentView>
                    <ContentView.Content>
                        <Frame>
                            <CarouselView x:Name="innerCarousel" Margin="50">
                                <CarouselView.ItemsSource>
                                    <x:Array Type="x:Type ContentView">
                                        <ContentView>
                                            <ContentView.Content>
                                                <Frame BackgroundColor="Green" />
                                            </ContentView.Content>
                                        </ContentView>
                                        <ContentView>
                                            <ContentView.Content>
                                                <Frame BackgroundColor="Blue" />
                                            </ContentView.Content>
                                        </ContentView>
                                    </x:Array>
                                </CarouselView.ItemsSource>
                                <CarouselView.ItemTemplate>
                                    <DataTemplate>
                                        <ContentView Content="Binding ." />
                                    </DataTemplate>
                                </CarouselView.ItemTemplate>
                            </CarouselView>
                        </Frame>
                    </ContentView.Content>
                </ContentView>
            </x:Array>
        </CarouselView.ItemsSource>
        <CarouselView.ItemTemplate>
            <DataTemplate>
                <ContentView Content="Binding ." />
            </DataTemplate>
        </CarouselView.ItemTemplate>
    </CarouselView>

【问题讨论】:

【参考方案1】:

你可以参考下面的代码:

outerCarousel:第 7 页

Xaml:

<ContentPage.Content>
    <CarouselView x:Name="outerCarousel" ItemsSource="Binding outers">
        <CarouselView.ItemsLayout>
            <LinearItemsLayout Orientation="Horizontal" />
        </CarouselView.ItemsLayout>
        <CarouselView.ItemTemplate>
            <DataTemplate>
                <ContentView Content="Binding content"></ContentView>
            </DataTemplate>
        </CarouselView.ItemTemplate>
    </CarouselView>
</ContentPage.Content>

代码背后:

 public partial class Page7 : ContentPage

    public Page7()
    
        InitializeComponent();
        this.BindingContext = new OuterViewModel();
    

public class Outer

    public ContentView content  get; set; 

public class OuterViewModel

    public ObservableCollection<Outer> outers  get; set; 
    public OuterViewModel()
    
        outers = new ObservableCollection<Outer>()
        
            new Outer() content=new View1(),
            new Outer() content=new View2()
        ;
    

innerCarousel:View1、View2

视图1:

<ContentView.Content>
    <Frame BackgroundColor="Red" />
</ContentView.Content>

视图2:

<ContentView.Content>
    <CarouselView x:Name="innerCarousel" Margin="50">
        <CarouselView.ItemsLayout>
            <LinearItemsLayout Orientation="Vertical" />
        </CarouselView.ItemsLayout>
        <CarouselView.ItemsSource>
            <x:Array Type="x:Type ContentView">
                <ContentView>
                    <ContentView.Content>
                        <Frame BackgroundColor="Green" />
                    </ContentView.Content>
                </ContentView>
                <ContentView>
                    <ContentView.Content>
                        <Frame BackgroundColor="Blue" />
                    </ContentView.Content>
                </ContentView>
            </x:Array>
        </CarouselView.ItemsSource>
        <CarouselView.ItemTemplate>
            <DataTemplate>
                <ContentView Content="Binding ." />
            </DataTemplate>
        </CarouselView.ItemTemplate>
    </CarouselView>
</ContentView.Content>

【讨论】:

以上是关于可以在另一个 CarouselView 中放置一个 CarouselView 吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 NatTable 中放置一个按钮? [关闭]

是否可以在 Form::submit(' ') 中放置一个引导字形图标 - Laravel

我可以在 SwiftUI 的单个列表部分中放置多个文本行吗?

我可以在 TabbedPage 内的 ContentPage 中放置另一个 ContentPage 吗?

ICanHaz.js - 可以在模板中放置一个 while 循环吗?

在 UWP 应用程序的椭圆元素中放置一个 BitmapIcon