为什么在这个Xaml中会忽略StringFormat?

时间:2014-02-19 00:12:51

标签: wpf xaml string-formatting

我有一个简单的标签,我想显示一些内置标签“header”的诊断数据。我没有在水平StackPanel中使用2个标签,而是尝试使用{Binding StringFormat}。这是XAML:

   <StackPanel Orientation="Horizontal">
       <Label Content="{Binding Path=SomeData, StringFormat=Value: {0}}" />
   </StackPanel>

在这种情况下,SomeData是视图模型上的字符串属性,它正确绑定到视图。 SomeData的值为“ABC”。

我希望Label能够显示:“Value:ABC” 不是。它显示简单:“ABC”

我做错了什么?

2 个答案:

答案 0 :(得分:6)

不确定为什么StringFormat不起作用,我猜它不适合Text以外的其他属性。对于Content媒体资源,您可以尝试使用ContentStringFormat

<Label Content="{Binding Path=SomeData}" ContentStringFormat="Value: {0}" />

有些人建议将ContentTextBlock一起打包,并在StringFormat属性绑定[fe question 1question 2]中使用TextBlock's Text。< / p>

<Label>
    <TextBlock Text="{Binding Path=SomeData, StringFormat='{}Value: {0}'}"/>
</Label>

答案 1 :(得分:5)

StringFormat适用于string类型的属性(当您绑定的对象正在转换为应用字符串格式的字符串时)。

Content的{​​{1}}属性属于Object。

建议的解决方案:改为使用Label