我正在尝试将标签内的工具提示设置为绑定:
<Label Content="x"
ToolTip="{Binding ElementName=_this, Path=date, StringFormat=Date: {0:G}}" />
然而这不起作用(即我只得到没有字符串“Date:”的日期 - 例如“1/1/2015 15:38”),显然是因为ToolTip类型是对象。 我已经尝试了几种补救措施,例如1)将绑定放在一个工具提示内的TextBp里面,标签里面的label.tooltip; 2)使用绑定(以及其他几个)将TextBlock放在label.tooltip中; 所有这些都不起作用。
有没有简单的方法来实现我想要的? (我不介意使用转换器,只要1)没有涉及外部库2)后面的代码中没有任何内容 - 我希望所有的显示代码都在XAML中)
答案 0 :(得分:2)
问题是ToolTip的类型为object
,而绑定的StringFormat部分仅在dependency property is of type string时使用。
很容易重现:
<StackPanel>
<TextBlock Text="{Binding Source={x:Static system:DateTime.Now}, StringFormat=Date: {0:g}}" />
<Label Content="{Binding Source={x:Static system:DateTime.Now}, StringFormat=Date: {0:g}}" />
</StackPanel>
文本块将输出正确的内容(Date: ....
),而标签只会在DateTime上调用ToString()
。
要解决您的问题,只需稍微详细地定义工具提示:
<Label Content="x">
<Label.ToolTip>
<TextBlock Text="{Binding Source={x:Static system:DateTime.Now}, StringFormat=Date: {0:g}}" />
</Label.ToolTip>
</Label>
或者您可以将工具提示绑定到viewmodel上的属性,该属性为您执行格式设置:
public string MyTooltipString { get { return String.Format("Date: {0:g}", theDate); } }
然后:
<Label ToolTip="{Binding MyTooltipString}" />
答案 1 :(得分:1)
试试这个:
<Label Content="x"
ToolTip="{Binding ElementName=_this, Path=svm.date, StringFormat=Date: {0:G} }" />
<强>编辑&gt;&GT;&GT;&GT; 强>
我测试了它并且它可以工作并打印“Date:”字符串,但只有日期。也许问题是你的svm.date不是约会。