如您所知,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可以轻松解决此问题。
对于这个话题的任何帮助和想法都将不胜感激。
只需在MultiBinding
上设置StringFormat
属性;对于多重绑定中的每个绑定,使用占位符({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:是对绑定的引用。
[0:hh:mm tt]用于显示上午/下午。
<TextBlock>
<Run Text="{Binding A, StringFormat={}{0:F1}}"/>
<Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>
StringFormat="{}{0:F1}{1:F1}"
。即使写成<Run /><Run /><Run />
,只有在您不格式化XAML(如ReSharper所做的那样)并且最终处于<Run />[CRLF]<Run />[CRLF]<Run />
时才会成功。 - Marcel
<MultiBinding/>
需要一个转换器。实际上,当我尝试像上面那样设置多绑定时,在运行时会出现“无法设置MultiBinding,因为必须指定MultiValueConverter”的错误提示。那么...如何才能让这个答案起作用呢? - Peter Duniho