【问题标题】:wpf - binding stringformat on label using string literalwpf - 使用字符串文字在标签上绑定字符串格式
【发布时间】:2011-04-27 12:30:50
【问题描述】:

我已将滑块控件的工具提示绑定到它的 Value 属性,并尝试使用 StringFormat 使其显示“当前值 {0} of 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 日期/时间/货币格式转换。我想我有办法通过多重绑定来做到这一点,但这似乎是不必要的额外工作。我希望对于字符串文字格式,我仍然不必编写自定义转换器。

在我的应用程序中,我发现自己在项目旁边使用了很多额外的标签,因此了解字符串格式有望让我消除一些不必要的标签。

【问题讨论】:

    标签: wpf xaml string-formatting


    【解决方案1】:

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

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

    使用Label.ContentStringFormat,即

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

    如果您的第一个字符是{,您只需要使用{} 转义string

    【讨论】:

    • 日期可以在此处格式化,如下所示:“开始日期:{0:dd-MM-yyyy}”
    【解决方案2】:

    工具提示可以查看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

    【讨论】:

    • 我仍然无法让绑定在滑块的 Value 属性上工作,但是当我将工具提示绑定到滑块所绑定的变量时它可以工作。也许值不是可绑定的滑块属性..hmm
    猜你喜欢
    • 2013-01-31
    • 2018-02-14
    • 1970-01-01
    • 2016-04-03
    • 2019-03-15
    • 2011-10-20
    • 2011-10-11
    • 2013-04-30
    • 1970-01-01
    相关资源
    最近更新 更多