如您所知,StringFormat对于WPF中的数据表示非常重要。我的问题是如何在WPF中进行多重绑定时使用StringFormat?
如果我举一个非常简单的例子:
我们有变量,分别是A和B,其值为10.255555和25.6999999
我们想向他们展示10.2,25.6
?
如何使用多重绑定来完成此操作?通常,它与ValueConverter
是小菜一碟非常感谢有关此主题的任何帮助和想法
答案 0 :(得分:51)
只需在StringFormat
上设置MultiBinding
属性即可;对多绑定中的每个绑定使用占位符({0},{1} ...),并在必要时包含格式说明符(例如,F1为十进制数字,带有1位十进制数字)
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:F1}{1:F1}">
<Binding Path="A" />
<Binding Path="B" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
开头的{}
部分是格式字符串是转义序列(否则XAML解析器会将{
视为标记扩展的开头)
答案 1 :(得分:6)
为简化起见,您可以使用两个TextBlock / Labels来显示值。
如果您使用的是.Net4,则可以绑定TextBlock的Run Inline元素
<TextBlock>
<Run Text="{Binding A, StringFormat={}{0:F1}}"/>
<Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>
答案 2 :(得分:5)
如果有人正在寻找“时间格式”,这是24小时时钟,这就是我来这篇文章的方式:
<TextBlock TextAlignment="Center">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:HH:mm} - {1:HH:mm}">
<Binding Path="StartTime" />
<Binding Path="EndTime" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
前导0:和1:是对Bindings的引用
[0:hh:mm tt]显示AM / PM