XAML CarouselView指定的子项已经有父项

ohtdti5x  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(102)

当我运行下面的代码时,我得到下面的错误信息:

Java.语言.非法状态异常:'指定的子系已经有父系。您必须先在子系的父系上呼叫removeView()。'

<CarouselView>
 <CarouselView.ItemsSource>
  <x:Array Type="{x:Type ContentView}">
   <ContentView></ContentView>
   <ContentView></ContentView>
   <ContentView></ContentView>
  </x:Array>
 </CarouselView.ItemsSource>
  <CarouselView.ItemTemplate>
   <DataTemplate>
     <ContentPresenter Content="{Binding .}"/>
   </DataTemplate>
  </CarouselView.ItemTemplate>
</CarouselView>

我不知道是否允许您这样设置CarouselView的ItemsSource,但当我尝试使用绑定时,我得到了相同的错误消息。

zvms9eto

zvms9eto1#

根据this maui issue,要像这样直接使用Maui ContentView,必须将CarouselView的Loop属性设置为false

<CarouselView Loop="False">

后果:视图不会形成“循环”:无法从上一个视图扫回第一个视图。
如果您需要“循环”行为,另一种方法是不在xaml中定义ItemsSource。相反,使用一个不包含UI类的ItemsSource,并使用一个DataTemplate或DataTemplateSelector来定义(或引用)所需的UI类(基于每个项)。[项是一个“模型”;模板使用绑定通过UI元素表示模型。]

相关问题