簡體   English   中英

Xamarin Forms 中的條件文本

[英]Conditional text in Xamarin Forms

如何有條件地呈現 Xamarin Forms 5 中的特定文本?

例如,我從供應商的 API 后端獲取了一些數據,數據庫中可能有或沒有該供應商的地址。

如果我有供應商的地址,我想顯示它,如果我沒有地址,我想顯示類似“n/a”的內容。

有沒有辦法在 XAML 頁面中處理這個問題,還是我必須在代碼后面處理它?

更新:電話號碼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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM