How to use stringformat in multibinding in WPF XAML

梦想的初衷 提交于 2019-12-18 19:01:23

问题


As you know StringFormat is of great importance for data representation in WPF. My problem is how to use StringFormat when multibinding in WPF?

If I give a very simple example:

We have variables,which are A and B and whose values are 10.255555 and 25.6999999

And we want to show them 10.2,25.6?

How can I do this with multibinding? Normally it is piece of cake with ValueConverter

Any help and ideas on this topic will be greately appreciated


回答1:


Just set the StringFormat property on the MultiBinding; use placeholders ({0}, {1}...) for each binding in the multibinding, and include format specifiers if necessary (e.g. F1 for a decimal number with 1 decimal digit)

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0:F1}{1:F1}">
            <Binding Path="A" />
            <Binding Path="B" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

The {} part at the beginning is the format string is an escape sequence (otherwise the XAML parser would consider { to be the beginning of a markup extension)




回答2:


If anyone is looking for "Time Formats" this is for 24hr Clock which is how I came to this post:

<TextBlock TextAlignment="Center">
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0:HH:mm} - {1:HH:mm}">
             <Binding Path="StartTime" />
             <Binding Path="EndTime" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

The leading 0: and 1: are the reference to the Bindings

[0:hh:mm tt] to display AM/PM




回答3:


To simplify you could use two TextBlock/Labels to display the values.

If you are using .Net4, you can bind in a Run Inline element of a TextBlock

<TextBlock>
    <Run Text="{Binding A, StringFormat={}{0:F1}}"/>
    <Run Text="{Binding B, StringFormat={}{0:F1}}"/>
</TextBlock>


来源:https://stackoverflow.com/questions/11014723/how-to-use-stringformat-in-multibinding-in-wpf-xaml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!