如何使用xaml绑定创建If Else条件

Ary*_*n M 1 xamarin.forms

我正在尝试根据条件创建一个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.

And*_*ndy 5

你不能在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事件,否则视图将无法正确更改.