我正在尝试根据条件创建一个XAML UI.
<StackLayout Orientation="Horizontal">
<!--IF WorkEmailAddress != NULL && WorkEmailAddrress != ""-->
<!-- BEGIN IF -->
<Label Text="{Binding WorkEmailAddress}" Style="{StaticResource labelListItem}"></Label>
<Image HeightRequest="16" HorizontalOptions="End" VerticalOptions="Center" Source="arrow.png" Margin="0,0,15,0"></Image>
<!-- END IF -->
<!-- ELSE -->
<Label Text="Add new email" Style="{StaticResource labelLinkItem}">
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
请问我可以告诉我如何在XAML中添加IF ELSE条件,以根据后端返回的值动态创建UI.
你不能在XAML中完全做到这一点.可能最好的方法是在你的视图模型中添加一个bool属性命名HasWorkEmailAddress
(我假设你有一个,那就是WorkEmailAddress
生命),true
如果有一个非null,非空值,则返回WorkEmailAddress
.
然后,您可以将第一个标签和Image的IsVisible属性绑定到此bool.
您还可以创建一个InverseBooleanConverter,它将实现IValueConverter.Convert方法将简单地取一个bool并取消它,并返回该值.将第二个标签'IsVisible绑定到同一个bool,但将InverseBooleanConverter指定为绑定的Converter.然后它将仅显示HasWorkEmailAddress返回false.标签绑定将如下所示:
<Label IsVisible="{Binding HasWorkEmailAddress, Converter={StaticResource InverseBooleanConverter}}" />
Run Code Online (Sandbox Code Playgroud)
如果您不想编写自己的转换器,可以在FreshEssentials Nuget包中找到.
最后一件事; 如果在显示页面时可能要更改WorkEmailAddress,则需要确保为HasWorkEmailAddress属性引发PropertyChanged事件,否则视图将无法正确更改.
归档时间: |
|
查看次数: |
722 次 |
最近记录: |