WPF - 使用字符串文字在标签上绑定StringFormat

23

我已经将滑块控件的提示绑定到它的 Value 属性,并尝试使用 StringFormat 使其显示“当前值 {0} / 10”,其中 {0} 是 Value 属性。以下是我尝试解决此问题时尝试的一种方法。

<Slider.ToolTip>
  <Label>
    <Label.Content>
      <Binding StringFormat="Current Value {0} of 10"
               ElementName="DebugLevelSlider"
               Path="Value" />
    </Label.Content>
  </Label>
</Slider.ToolTip>

我在网上找不到如何使用stringformat与像我上面提到的字符串文字一起使用的示例。 我看到很多关于stringformat日期/时间/货币格式转换的示例。 我认为我可以通过使用多绑定的方式来实现这个目标,但它似乎比必要的工作还要多。 我希望对于字符串字面值格式化,我仍然不必编写自定义转换器。

在我的应用程序中,我发现自己经常在项目旁边使用许多额外的标签,因此希望了解stringformat能够让我消除其中一些不必要的标签。

2个回答

96

Label.Content 是一个对象,因此您不能在那里使用 Binding.StringFormat,因为绑定的目标类型必须是 string 才能正常工作。

有两种解决方法:

  1. 使用 TextBlock 取代 Label,并绑定 Text 属性。

  2. 使用 Label.ContentStringFormat 例如:

    <Label ContentStringFormat="当前值 {0} / 10" Content={Binding ...} />
    
您只需要在第一个字符是{时用{}转义字符串

日期可以在此进行格式化,例如:"开始日期:{0:dd-MM-yyyy}"。 - Ciaran Gallagher

32

1
我仍然无法使滑块的Value属性绑定起来,但是当我将提示绑定到滑块绑定的变量时,它可以工作。也许Value不是可绑定的滑块属性... 嗯 - TWood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接