为什么我的StringFormat在WPF中不起作用

时间:2017-01-19 22:55:16

标签: c# wpf xaml string-formatting

我在SO上看过这样的一些问题,但没有一个答案对我有用!这是我的删节代码:

<Grid Margin="10,4,2,3">

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="150" />
    </Grid.ColumnDefinitions>

    <Image Name="myImage" />

    <WrapPanel Orientation="Vertical" Grid.Column="1" >
        <Label x:Name="labelDimensions" Content="Image Dimensions" />
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="3*" />
                <ColumnDefinition Width="1*" />
                <ColumnDefinition Width="3*" />
            </Grid.ColumnDefinitions>

            <Label Grid.Column="0" 
                   x:Name="imageWidth" 
                   Content="{Binding Path=ActualWidth, 
                             ElementName=myImage, 
                             StringFormat={}{0:1234.5}}" />
            <Label Grid.Column="1" x:Name="label3" Content=" x " />
            <Label Grid.Column="2" 
                   x:Name="imageHeight" 
                   Content="{Binding Path=ActualHeight, 
                             ElementName=myImage, 
                             StringFormat={}{0:1234.5}}" />
        </Grid>
    </WrapPanel>

</Grid>

我希望在“图像维度”下面看到&#39;标签,类似&#34; 641.3 x 480.0&#34;但无论我做什么,它都会出现像&#34; 641.30000000 x 480&#34;。

我的格式如{0:1234.5}和{0:#,#。#}但是nether有任何影响。我也试过ConentStringFormat作为一个建议的答案,但是甚至没有编译。

非常感谢任何建议。

2 个答案:

答案 0 :(得分:4)

改为使用ContentStringFormat

StringFormat仅在绑定到String类型的属性时使用。 Content的{​​{1}}属性属于对象类型,因为您可以看到here,因此Label将无效。

答案 1 :(得分:1)

尝试提供StringFormat={}{0:F1}

<Label Grid.Column="0" 
       x:Name="imageWidth" 
       Content="{Binding Path=ActualWidth, 
                 ElementName=myImage, 
                 StringFormat={}{0:F1}" />
<Label Grid.Column="1" x:Name="label3" Content=" x " />
<Label Grid.Column="2" 
        x:Name="imageHeight" 
        Content="{Binding Path=ActualHeight, 
                  ElementName=myImage, 
                  StringFormat={}{0:F1}" />