如何在WPF XAML中的多绑定中使用stringformat

ibr*_*maz 14 wpf xaml binding wpf-controls

如您所知,StringFormat对于WPF中的数据表示非常重要.我的问题是如何在WPF中进行多重绑定时使用StringFormat?

如果我举一个非常简单的例子:

我们有变量,它们是A和B,其值为10.255555和25.6999999

我们想要展示它们10.2,25.6吗?

我怎么能用multibinding做到这一点?通常,它与ValueConverter一块蛋糕

任何有关此主题的帮助和想法都将受到高度赞赏

Tho*_*que 53

只需设置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>
Run Code Online (Sandbox Code Playgroud)

{}开头的部分是格式字符串是转义序列(否则XAML解析器将被视为{标记扩展的开头)


小智 7

如果有人正在寻找"时间格式"这是24小时时钟,这就是我来到这篇文章的方式:

<TextBlock TextAlignment="Center">
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0:HH:mm} - {1:HH:mm}">
             <Binding Path="StartTime" />
             <Binding Path="EndTime" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

前导0:和1:是对Bindings的引用

[0:hh:mm tt]显示AM/PM


Sha*_*rot 6

为简化起见,您可以使用两个TextBlock/Labels来显示值.

如果您使用的是.Net4,则可以绑定TextBlock的Run Inline元素

<TextBlock>
    <Run Text="{Binding A, StringFormat={}{0:F1}}"/>
    <Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)