How to use stringformat in multibinding in WPF XAM

2019-02-11 23:31发布

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

3条回答
Luminary・发光体
2楼-- · 2019-02-11 23:55

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)

查看更多
神经病院院长
3楼-- · 2019-02-12 00:10

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>
查看更多
时光不老,我们不散
4楼-- · 2019-02-12 00:12

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

查看更多
登录 后发表回答