【问题标题】:StringFormat inside a Label ToolTip标签工具提示中的 StringFormat
【发布时间】:2015-12-29 13:17:24
【问题描述】:

我正在尝试将标签内的工具提示设置为绑定:

<Label Content="x"
 ToolTip="{Binding ElementName=_this, Path=date, StringFormat=Date: {0:G}}" />

但是这不起作用(即我只得到没有字符串“日期:”的日期 - 例如“1/1/2015 15:38”)显然是因为工具提示类型是对象。 我尝试了几种补救措施,例如 1) 将绑定放在 TextBlock 内的工具提示内的标签内的 label.tooltip 内; 2) 将 TextBlock 放在带有绑定的 label.tooltip 内(以及其他几个); 所有这些都不起作用。

有什么简单的方法可以实现我想要的吗? (我不介意使用转换器,只要 1)不涉及外部库 2)后面的代码中没有任何内容 - 我希望所有显示代码都在 XAML 中)

【问题讨论】:

  • 您的 xaml 中的“_this”是什么?如果后面没有代码,什么是“svm.date”?
  • @Spawn _this 是当前窗口,svm.date 只是一个带有日期变量的对象。
  • 你能显示所有问题代码吗?
  • 我认为svm.date 代码会有所帮助。
  • 对不起,我复制时出错了。现在好点了吗?

标签: wpf xaml binding


【解决方案1】:

问题在于 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>

或者您可以将工具提示绑定到视图模型上的属性,该属性会为您进行格式化:

public string MyTooltipString { get { return String.Format("Date: {0:g}", theDate); } }

然后:

<Label ToolTip="{Binding MyTooltipString}" />

【讨论】:

  • 我试过这个:&lt;Label Content="x"&gt; &lt;Label.ToolTip&gt; &lt;TextBlock Text="{Binding ElementName=_this, Path=date, StringFormat=Date: {0:g}}" /&gt; &lt;/Label.ToolTip&gt; &lt;/Label&gt; 并且工具提示是空的。
  • 至于其他建议 - 我希望我的代码在 XAML 中,这样它就不会隐藏在代码后面(因为它是显示的一个组成部分)。如果没有其他选择,那么我会将代码放在代码隐藏中。
【解决方案2】:

试试这个:

<Label Content="x"
ToolTip="{Binding ElementName=_this, Path=svm.date, StringFormat=Date: {0:G} }" />

编辑>>>>

我已经对其进行了测试,它可以正常工作并打印“日期:”字符串,但仅限日期。也许问题在于您的 svm.date 不是日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2014-08-22
    • 2011-01-13
    • 2018-12-20
    • 2011-09-30
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多