Xamarin Forms 中的条件文本

Conditional text in Xamarin Forms

如何在 Xamarin Forms 5 中有条件地呈现特定文本?

例如,我从我的 API 后端获取供应商的一些数据,数据库中可能有或没有该供应商的地址。

如果我有供应商的地址,我想显示它,如果我没有地址,我想显示类似“n/a”的内容。

有没有办法在 XAML 页面中处理这个问题,还是我必须在代码后面处理它?

更新: phone 号码 ListView 的 XAML 页面如下所示:

<Grid Grid.Row="1" Grid.Column="0" RowDefinitions="150, *" ColumnDefinitions="250, 250">
   <StackLayout
      Grid.Row="0"
      Grid.Column="0"
      Padding="10">
      <ListView
         BackgroundColor="Transparent"
         SeparatorVisibility="None"
         ItemsSource="{Binding Contact.PhoneNumbers, TargetNullValue='n/a'}">
         <ListView.Header>
            <StackLayout>
               <Label Text="Phone Number(s)"
                  FontAttributes="Bold"/>
            </StackLayout>
         </ListView.Header>
         <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding PhoneNumberDisplay}" />
            </DataTemplate>
         </ListView.ItemTemplate>
      </ListView>
   </StackLayout>
</Grid>

您可以使用 xaml 绑定 TargetNullValue

<Label Text="{Binding Location, TargetNullValue='n/a'}"/>

如果您没有地址,您的 API 或您的代码应将 Location 设置为 null 以使 TargetNullValue 起作用。

更新(回复)。

在 ItemTemplate 内的绑定中使用 TargetNullValue(应用于每个单个元素)而不是在 itemsource 绑定中:

<Grid Grid.Row="1" Grid.Column="0" RowDefinitions="150, *" ColumnDefinitions="250, 250">
   <StackLayout
      Grid.Row="0"
      Grid.Column="0"
      Padding="10">
      <ListView
         BackgroundColor="Transparent"
         SeparatorVisibility="None"
         ItemsSource="{Binding Contact.PhoneNumbers}">
         <ListView.Header>
            <StackLayout>
               <Label Text="Phone Number(s)"
                  FontAttributes="Bold"/>
            </StackLayout>
         </ListView.Header>
         <ListView.ItemTemplate>
            <DataTemplate>
                <TextCell Text="{Binding PhoneNumberDisplay, TargetNullValue='n/a'}" />
            </DataTemplate>
         </ListView.ItemTemplate>
      </ListView>
   </StackLayout>
</Grid>