我有触发器,工具提示可以翻转日期格式。两个触发器都有效。但是,当我将字符串格式应用于第一个格式并向 DateTime 值添加/附加字符串“UTC”时,日期会以正确的日期时间格式正确显示,但“UTC”部分不会附加:
....
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ShowUTC}" Value="True">
<Setter TargetName="brd" Property="Border.ToolTip"
Value="{Binding Path=SomeDate,
<!--Problem on the line below - the 'UTC' part isn't being added -->
StringFormat={}{0:ddd MM/dd/yy HH:mm:ss} UTC}" />
</DataTrigger>
<DataTrigger Binding="{Binding ShowUTC}" Value="False">
<Setter TargetName="brd" Property="Border.ToolTip"
Value="{Binding SomeDate,
Converter={StaticResource ToLocalTime}}"/>
</DataTrigger>
.....
这应该按照 MSDN 工作: http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat(v=vs.110).aspx 我也尝试过其他类型并成功运行,DateTime 是否有问题?
更新:
有趣的是,在 TextBlock 上使用相同的代码:
Text="{Binding Path=EndInterval, StringFormat={}{0:ddd MM/dd/yy HH:mm:ss} UTC}"
但不在工具提示上:
<Border Tooltip="{Binding Path=EndInterval, StringFormat={}{0:ddd MM/dd/yy HH:mm:ss} UTC}"
最佳答案
由于绑定(bind)是到 ToolTip,因此它隐式设置 Content 属性。工具提示有一个 ContentFormatString 属性,您可以在想要格式化时使用该属性。我还没有测试过,但我认为下面的方法会起作用。
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ShowUTC}" Value="True">
<Setter TargetName="brd" Property="Border.ToolTip"
Value="{Binding Path=SomeDate}" />
<Setter TargetName="brd" Property="Border.ToolTip.ContentFormatString"
Value="{}{0:ddd MM/dd/yy HH:mm:ss} UTC" />
</DataTrigger>
<DataTrigger Binding="{Binding ShowUTC}" Value="False">
<Setter TargetName="brd" Property="Border.ToolTip"
Value="{Binding SomeDate,
Converter={StaticResource ToLocalTime}}"/>
</DataTrigger>
</DataTemplate.Triggers>
关于wpf - XAML 工具提示的 StringFormat DateTime 不附加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21050399/