gpt4 book ai didi

xamarin.forms - 如何使用 xaml 绑定(bind)创建 If Else 条件

转载 作者:行者123 更新时间:2023-12-04 09:54:50 25 4
gpt4 key购买 nike

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

请让我知道如何在 XAML 中添加 IF ELSE 条件,以根据后端返回的值动态创建 UI。

最佳答案

您不能在 XAML 中完全做到这一点。可能最好的方法是在 View 模型中添加一个名为 HasWorkEmailAddress 的 bool 属性。 (我假设你有一个,这就是 WorkEmailAddress 所在的位置)返回 true如果 WorkEmailAddress 有一个非空、非空值.

然后可以绑定(bind)第一个标签和图片的IsVisible这个 bool 值的属性。

您还可以创建一个 InverseBooleanConverter,它将实现 IValueConverter . Convert 方法将简单地接受一个 bool 值并将其取反,然后返回该值。将第二个标签的 IsVisible 绑定(bind)到相同的 bool 值,但将 InverseBooleanConverter 指定为绑定(bind)的转换器。只有当 HasWorkEmailAddress 返回 false 时才会显示。标签绑定(bind)将如下所示:

<Label IsVisible="{Binding HasWorkEmailAddress, Converter={StaticResource InverseBooleanConverter}}" />

如果您不想编写自己的转换器, FreshEssentials 中有一个。 Nuget 包。

最后一件事;如果在显示页面时 WorkEmailAddress 可能发生更改,则需要确保为 HasWorkEmailAddress 属性引发 PropertyChanged 事件,否则您的 View 将不会适当更改。

关于xamarin.forms - 如何使用 xaml 绑定(bind)创建 If Else 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com