我已将滑块控件的工具提示绑定到它的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中理解将有希望让我消除一些不必要的标签。
答案 0 :(得分:94)
Label.Content
是对象,因此您无法使用Binding.StringFormat
,因为绑定的目标类型必须为string
才能生效。
两种解决方法是:使用TextBlock
代替Label
并绑定Text
属性。
<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