工具提示忽略指定的日期时间格式说明符
ToolTip ignores specified DateTime format specifier
我在 WPF 中遇到一个关于 ToolTip
s 的奇怪问题:
一、代码:
<TextBlock Text="{Binding SelectedItem.Approver.Timestamp, StringFormat='{}{0:g}'}"
ToolTip="{Binding SelectedItem.Approver.Timestamp, StringFormat='{}{0:f}'}" />
如您所见,“g format specifier" (e. g. 2016-12-24 23:42
) is used for the timestamp's display and "f format specifier”(例如 Saturday, 24. December 2016 23:42
)的 ToolTip
。
然而,我得到的是:2016-12-24 23:42
。换句话说:ToolTip
显示与 TextBlock
.
完全相同的格式
将 TextBlock
切换为 "f format specifier" 时甚至更奇怪:ToolTip
只是保持 "g format specifier" 指定的格式。
那么,我有两个问题:
a) 为什么会这样?
和
b) 如何强制执行我想要的格式?
我认为语法不正确。
参见:
<TextBlock Text="{Binding SelectedItem.Approver.Timestamp, StringFormat={}{0:g}}"
ToolTip="{Binding SelectedItem.Approver.Timestamp, StringFormat={}{0:f}}" />
我成功了。
<TextBlock Text="{Binding SelectedItem.Approver.Timestamp, StringFormat={}{0:g}}">
<TextBlock.ToolTip>
<ToolTip Content="{Binding SelectedItem.Approver.Timestamp}" ContentStringFormat="{}{0:f}" />
</TextBlock.ToolTip>
</TextBlock>
由于 Tooltip 可以包含任何内容,我们应该使用它的 ContentStringFormat。
我在 WPF 中遇到一个关于 ToolTip
s 的奇怪问题:
一、代码:
<TextBlock Text="{Binding SelectedItem.Approver.Timestamp, StringFormat='{}{0:g}'}"
ToolTip="{Binding SelectedItem.Approver.Timestamp, StringFormat='{}{0:f}'}" />
如您所见,“g format specifier" (e. g. 2016-12-24 23:42
) is used for the timestamp's display and "f format specifier”(例如 Saturday, 24. December 2016 23:42
)的 ToolTip
。
然而,我得到的是:2016-12-24 23:42
。换句话说:ToolTip
显示与 TextBlock
.
将 TextBlock
切换为 "f format specifier" 时甚至更奇怪:ToolTip
只是保持 "g format specifier" 指定的格式。
那么,我有两个问题:
a) 为什么会这样?
和
b) 如何强制执行我想要的格式?
我认为语法不正确。
参见:
<TextBlock Text="{Binding SelectedItem.Approver.Timestamp, StringFormat={}{0:g}}"
ToolTip="{Binding SelectedItem.Approver.Timestamp, StringFormat={}{0:f}}" />
我成功了。
<TextBlock Text="{Binding SelectedItem.Approver.Timestamp, StringFormat={}{0:g}}">
<TextBlock.ToolTip>
<ToolTip Content="{Binding SelectedItem.Approver.Timestamp}" ContentStringFormat="{}{0:f}" />
</TextBlock.ToolTip>
</TextBlock>
由于 Tooltip 可以包含任何内容,我们应该使用它的 ContentStringFormat。