如您所知,StringFormat 对于 WPF 中的数据表示非常重要。我的问题是如何在 WPF 中进行多重绑定时使用 StringFormat?
如果我举一个非常简单的例子:
我们有变量,它们是 A 和 B,其值为 10.255555 和 25.6999999
我们想向他们展示10.2,25.6
?
如何使用多重绑定来做到这一点?通常使用 ValueConverter 是小菜一碟
任何有关此主题的帮助和想法将不胜感激
如您所知,StringFormat 对于 WPF 中的数据表示非常重要。我的问题是如何在 WPF 中进行多重绑定时使用 StringFormat?
如果我举一个非常简单的例子:
我们有变量,它们是 A 和 B,其值为 10.255555 和 25.6999999
我们想向他们展示10.2,25.6
?
如何使用多重绑定来做到这一点?通常使用 ValueConverter 是小菜一碟
任何有关此主题的帮助和想法将不胜感激
只需在;上设置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 解析器会认为{
是标记扩展的开头)
如果有人正在寻找“时间格式”,这是 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
为简化起见,您可以使用两个 TextBlock/Labels 来显示值。
如果您使用的是 .Net4,则可以在 TextBlock 的 Run Inline 元素中绑定
<TextBlock>
<Run Text="{Binding A, StringFormat={}{0:F1}}"/>
<Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>