【发布时间】:2017-02-18 03:06:48
【问题描述】:
我想显示一个带有纬度和经度的文本块。在我的模型中,lat 和 lng 是两个变量,所以我需要将它们组合起来,最好使用this answer 建议的字符串格式。不幸的是,UWP 应用程序似乎不支持多重绑定。
这让我有几个选择。
- 创建两个文本块,将它们绑定到每个变量并将它们彼此相邻对齐。我不确定是否需要两个额外的文本块才能在值前面显示“lat”和“lng”。然后第三个标签再次在其前面显示“位置”。 This answer 声明没有用于 Binding 的 stringformat 属性。在我看来,总共五个文本块太多了。
<RelativePanel>
<TextBlock x:Name="EquipmentLatTextBox"
Text="{Binding Equipment.lat}"/>
<TextBlock x:Name="EquipmentLngTextBox"
Text="{Binding Equipment.lng}"
RelativePanel.RightOf="EquipmentLatTextBox"/>
</RelativePanel>
创建价值转换器。 这似乎也非常不必要。我明白了使用转换器跨数据类型转换的目的,但是对于连接字符串,应该有一个内置属性。
在视图模型中创建一个属性,该属性返回应显示的值字符串。这似乎是最好的选择,因为该方法不在模型中,但我仍然认为我应该能够在 xaml 标记中做到这一点。
有没有更好的方法来做到这一点?
【问题讨论】:
-
对不起,但我似乎不完全明白你在问什么。为什么不直接创建属性(并创建与该属性的绑定),getter 返回您想要的任何内容(例如 return String.Format("{0} and {1}", Equipment.lat, Exuipment.lng);)
-
是的,这就是我对第三个选项的看法。我显然应该在那里写属性而不是方法......我的问题是是否有办法在 xaml 标记中执行此操作,而不是在我的视图模型中创建属性。
-
从周年更新开始,x:Bind 支持方法。可以像转换器一样可重用,但像 VM 属性一样易于编写。