我在 TabSwitcher 中使用 DelayedViews。当我将 DelayedView 内的布局从 FlexLayout 更改为 Grid 时,第一个选项卡将不显示任何内容。当我打开下一个显示相同类型 DelayedView(同一类型的新对象)的选项卡时,它会正确显示。 仅第一个选项卡及其内容不会显示。 logcat 中没有抛出或显示异常
重现
标签视图切换器
<tabs:ViewSwitcher x:Name="Switcher"
Animate="True"
SelectedIndex="{Binding SelectedViewModelIndex, Mode=TwoWay}">
<tabs:DelayedView x:TypeArguments="contentViews:LobiPageView"
AccentColor="White"
BindingContext="{Binding Page1ViewModel}"
Animate="True"
UseActivityIndicator="True" />
<tabs:DelayedView x:TypeArguments="contentViews:LobiPageView"
BindingContext="{Binding Page2ViewModel}"
AccentColor="{StaticResource Primary}"
Animate="True"
UseActivityIndicator="True" />
<tabs:DelayedView x:TypeArguments="contentViews:LobiPageView"
BindingContext="{Binding Page3ViewModel}"
AccentColor="{StaticResource Primary}"
Animate="True"
UseActivityIndicator="True" />
<tabs:DelayedView x:TypeArguments="contentViews:LobiPageView"
BindingContext="{Binding Page4ViewModel}"
AccentColor="{StaticResource Primary}"
Animate="True"
UseActivityIndicator="True" />
<tabs:DelayedView x:TypeArguments="contentViews:LobiPageView"
BindingContext="{Binding Page5ViewModel}"
AccentColor="{StaticResource Primary}"
Animate="True"
UseActivityIndicator="True" />
</tabs:ViewSwitcher>
延迟查看内容视图
<StackLayout>
<Grid BindableLayout.ItemsSource="{Binding PageItems}" >
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<BindableLayout.ItemTemplate>
<DataTemplate>
....
</DataTemplate>
</Grid>
</stackLayout>
屏幕截图(如果适用) 第一页不显示 第二个选项卡以相同的内容视图正确显示
这似乎是毛伊岛的错误。
解决方法是自己处理选定的 TabIndex 并在 TabviewSwitcher 的第一个索引上隐藏一个空的 StackLayout