wpf - XAML 工具提示的 StringFormat DateTime 不附加字符串

标签 wpf xaml string-formatting

我有触发器,工具提示可以翻转日期格式。两个触发器都有效。但是,当我将字符串格式应用于第一个格式并向 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/

相关文章:

objective-c - 重新格式化表示日期的 NSString

python - 有没有办法在执行连接操作时证明子字符串的合理性

C# MVVM 如何从模型更新 View 模型字符串

c# - 如何将UpdateSourceTrigger的值交给UserControl或者运行时更新?

c# - 未触发 Focused 或 OnFocusChange 事件

wpf - 接口(interface)/抽象的 XAML 集合 "Could not create an instance"

wpf - 如何以编程方式在 WPF ListView 中设置选择标记(焦点项目)

wpf - Silverlight 4 - ScrollViewer 和子 DataGrid MinHeight

c# - WPF 命令绑定(bind)到祖先属性

c# - 在最后一个字符前插入一个点