wpf - 使用字符串文字在标签上绑定stringformat

时间:2010-10-19 14:08:43

标签: wpf xaml string-formatting

我已将滑块控件的工具提示绑定到它的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中理解将有希望让我消除一些不必要的标签。

2 个答案:

答案 0 :(得分:94)

Label.Content是对象,因此您无法使用Binding.StringFormat,因为绑定的目标类型必须为string才能生效。

两种解决方法是:使用TextBlock代替Label并绑定Text属性。

使用Label.ContentStringFormat

<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} />

如果您的第一个字符是string

,则只需{} { {{1}}

答案 1 :(得分:32)

对于工具提示,您可以查看WPF binding with StringFormat doesn't work on ToolTips

就上面指定的StringFormat而言,您必须转义字符串。

StringFormat="{}Current Value {0} of 10"

以下是一堆StringFormat示例。 http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx