【发布时间】:2017-01-19 22:55:16
【问题描述】:
我在 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>
我希望在“图像尺寸”标签下方看到“641.3 x 480.0”之类的东西,但无论我做什么,它都会出现“641.30000000 x 480”之类的东西。
我有 {0:1234.5} 和 {0:#,#.#} 之类的格式,但它们都没有任何效果。我也尝试过 ConentStringFormat 作为建议的一个 SO 答案,但它甚至没有编译。
任何建议将不胜感激。
【问题讨论】:
-
显然,如果您的格式中没有前导纯文本,则需要它们。没有它们,它不会编译。
-
你试过
{0:F1}吗? (见Standard Numeric Format Strings。) -
我现在有。当我调整它的大小时,我得到像“639.00000 x 426.00000”这样的东西,所以没有区别。我不认为它是格式字符串本身,其他东西似乎让 WPF 完全忽略它。
-
干杯伙计们,链接的问题有答案(就像我读过的其他问题一样,我只是没有建立正确的联系)。一旦我使用了 TextBlock 而不是 标签,StringFormat 就起作用了。 ContentStringFormat 没有编译,也许我的目标是错误的 .Net 版本。
-
ContentStringFormat不在绑定内。它本身就是一个 Control 属性。<Label Content="{Binding LastModTs}" Grid.Column="2" ContentStringFormat="{}{0:dd.MM.yyy HH:mm}" />
标签: c# wpf xaml string-formatting