首页 文章

为什么在这个Xaml中会忽略StringFormat? [重复]

提问于
浏览
1

这个问题在这里已有答案:

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

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

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

我希望标签显示:“ Value :ABC”它不是 . 它显示简单:“ABC”

我究竟做错了什么?

2 回答

  • 6

    不确定为什么 StringFormat 不适合 Text 以外的 property . 对于 Content 属性,您可以尝试 ContentStringFormat

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

    有些人建议用 TextBlock 包装 Content 并在 TextBlock's Text 属性绑定[f.e question 1question 2]中使用 StringFormat .

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

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

    LabelContent 属性是Object类型 .

    建议的解决方案:使用 TextBlock 代替!

相关问题