我想显示一个具有纬度和经度的文本块。在我的模型中,lat和lng是两个变量,因此我需要将它们组合在一起,最好是与stringformat结合使用,如答案所示。不幸的是,UWP应用程序似乎不支持多重绑定。
这给我留下了两个选择。
<RelativePanel>
<TextBlock x:Name="EquipmentLatTextBox"
Text="{Binding Equipment.lat}"/>
<TextBlock x:Name="EquipmentLngTextBox"
Text="{Binding Equipment.lng}"
RelativePanel.RightOf="EquipmentLatTextBox"/>
</RelativePanel>
Run Code Online (Sandbox Code Playgroud)
创建一个值转换器。这似乎也非常不必要。我明白了使用转换器在数据类型之间进行转换的观点,但是为了隐含字符串,应该在属性中添加buildt。
在视图模型中创建一个属性,该属性返回应显示的值的字符串。这似乎是最好的选择,因为该方法不在模型中,但我仍然认为我应该能够在xaml标记中执行此操作。
有一个更好的方法吗?
这可以通过运行来解决。在UWP中实现此功能实际上比在WPF中实现多重绑定要容易得多。一个TextBlock项可以包含多个可以绑定到不同属性的文本“运行”。运行的行为类似于内联元素。每次运行都可以在标签之间直接包含文本,也可以将其作为文本属性。每个运行元素也可以具有独立的样式。
对于我在问题中提供的示例,我最终将其格式化为
<TextBlock x:Name="LocationTextBlock">
<Run FontWeight="Bold">Location: </Run>
<LineBreak />
<Run>Lat: </Run>
<Run Text="{x:Bind ViewModel.Equipment.Lat}"></Run>
<Run> Lng: </Run>
<Run Text="{x:Bind ViewModel.Equipment.Lng}"></Run>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样
位置:
纬度:00.000纬度:00.000
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |