xaml - 根据 bool 值更改 Xamarin 表单标签的文本

标签 xaml xamarin.forms binding

我试图有一个可以有两个不同文本值的标签。我将根据 bool 值显示两者之一。我知道我可以创建与我的 View 模型的绑定(bind),该绑定(bind)可以具有可以更改的属性(例如 LabelText)。但是,在这种情况下,我需要在 View 模型中设置文本,感觉有点乱。

我正在寻找某种转换器(IValueConverter),它在文本属性上绑定(bind)一个 bool 值并具有两个字符串参数。然后转换器为标签的文本选择正确的字符串。但是,据我所知,转换器上不可能有多个参数?

任何想法如何以干净的方式解决这个问题?也许以某种方式通过子类化标签,但如何?

最佳答案

在这种情况下,我更喜欢触发器而不是 IValueConverter。因为使用触发器,您可以将 Text 放在 View 本身内。所以如果你想改变;你不必去寻找那个标签之外的逻辑。

<Label Text="Hello World!">
            <Label.Triggers>
                    <DataTrigger TargetType="Label" Binding="{Binding IsActive}" Value="false">
                        <Setter Property="Text"  Value="Not Active" />
                    </DataTrigger>
                    <DataTrigger TargetType="Label" Binding="{Binding IsActive}" Value="true">
                        <Setter Property="Text"  Value="Active" />
                    </DataTrigger>
                </Label.Triggers>

</Label>

所以在这里你将触发器与你的虚拟机中的 bool 属性绑定(bind)。如果它的 True 或 False 每当它改变它就会触发那个触发器。

只是让你知道;您甚至可以更改其他属性!可以说如果你也想改变颜色? 因此,在这种情况下,这可能是比使用 ValueConverter 更好的解决方案。

希望这可以帮助。如果您需要更多帮助,请告诉我。

关于xaml - 根据 bool 值更改 Xamarin 表单标签的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53304032/

相关文章:

java - 无法正确地将 std::pair 暴露给 java 绑定(bind)?

java - 如何将一种语言(例如 python)绑定(bind)到另一种语言(例如 C++)?

wpf - 更改 WPF 数据绑定(bind)组合框中分隔符的背景颜色

xaml - 如何使顶部带有标签的图像按钮可点击

mvvm - Xamarin Forms MVVM (Prism) with Media.Plugin - 如何从设备存储中获取照片

java - 将按钮绑定(bind)到多个属性不起作用

c# - 按钮命令未触发

wpf - 在Visual Studio 2010中调试和修复ObjectDisposedException

c# - 强制用户更新到最新版本

c# - MVVM Xamarin 从 ViewModel 打开新窗口 - 如何消除对 View 的引用