Xamarin.Forms(XAML):取决于条件的不同布局

Hel*_*yes 2 xaml xamarin.forms

有没有一种方法可以根据一个条件选择要初始化的布局?我有一个用于足球统计数据的表格,但是如果myViewModel.Sport == Sports.Basketball我想加载一个完全不同的布局。

我在每个View中都使用Datatrigger尝试了类似的方法,但对我来说似乎一团糟:

<Label Text="{Binding Goals}" 
       Grid.Row="1" Grid.Column="0">
    <Label.Triggers>
        <DataTrigger TargetType="Label" 
                     Binding="{Binding Sport}" 
                     Value="1">
            <Setter Property="Text" 
                    Value="{Binding Points}"/>
        </DataTrigger>
    </Label.Triggers>
</Label>
Run Code Online (Sandbox Code Playgroud)

我显示“目标”,但如果“运动”枚举值为1(“ Sports.Basketball”),我将更改为““点””。我想用很多标签甚至图像来做,所以我需要一种正确的方法。

有人可以帮我吗?我需要根据ViewModel的Sport属性加载不同的Grid。

Ger*_*uis 5

您可以做的另一件事是将每个单独的运动项放入自己的视图中,将所有视图添加到页面中,并根据要显示的运动项设置其IsVisible属性。

伪代码中的示例如下所示:

<Page>
   <Grid>
       <BasketballView IsVisible="{Binding IsBasketball}">
       <SoccerView IsVisible="{Binding IsSoccer}">
       <FootballView IsVisible="{Binding IsFootball}">
   </Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)

然后从ViewModel设置适当的布尔值。

  • 那可能很昂贵。即使不可见,也可以创建视图。 (3认同)