根据布尔值更改 Xamarin 表单标签的文本
Posted
技术标签:
【中文标题】根据布尔值更改 Xamarin 表单标签的文本【英文标题】:Change Text of Xamarin Forms Label based on bool value 【发布时间】:2019-04-17 15:29:31 【问题描述】:我正在尝试创建一个可以有两个不同文本值的标签。我将根据布尔值显示两者之一。我知道我可以创建与我的视图模型的绑定,该绑定可以具有可以更改的属性(例如 LabelText)。但是,在这种情况下,我需要在视图模型中设置文本,感觉有点乱。
我正在寻找某种转换器 (IValueConverter),它在 text 属性上绑定一个 bool 并具有两个字符串参数。然后转换器为标签的文本选择正确的字符串。但是,据我所知,一个转换器不能有多个参数?
任何想法如何以干净的方式解决这个问题?也许以某种方式通过子类化标签,但如何?
【问题讨论】:
我会尝试使用两个 Span 创建一个标签,然后根据该布尔值设置每个 Span 的可见性。不确定这是否可行,但这是首先想到的。 【参考方案1】:我更喜欢这种情况下的触发器而不是 IValueConverter。因为使用触发器,您可以将 Text 放在视图本身内。所以如果你想改变;你不必去寻找那个标签之外的逻辑。
<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>
因此,您在此处将触发器与 VM 中的布尔属性绑定。如果它的 True 或 False 每当它改变它就会触发那个触发器。
只是为了让你知道;您甚至可以更改其他属性!假设您也想更改颜色?因此,在这种情况下,这可能是比使用 ValueConverter 更好的解决方案。
希望这会有所帮助。如果您需要更多帮助,请告诉我。
【讨论】:
这正是我正在寻找的解决方案,它就像一个魅力!非常感谢以上是关于根据布尔值更改 Xamarin 表单标签的文本的主要内容,如果未能解决你的问题,请参考以下文章