[英]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.