首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XAML工具提示的StringFormat DateTime不追加字符串

XAML工具提示的StringFormat DateTime不追加字符串
EN

Stack Overflow用户
提问于 2014-01-10 17:16:08
回答 4查看 2.2K关注 0票数 2

我有工具提示翻转日期格式的触发器。这两种触发器都起作用。但是,当我将字符串格式应用于第一个字符串并将字符串"UTC“添加/追加到DateTime值时,日期将以正确的日期时间格式正确显示,但"UTC”部分没有追加:

代码语言:javascript
运行
复制
....
<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上工作:

代码语言:javascript
运行
复制
Text="{Binding Path=EndInterval, StringFormat={}{0:ddd MM/dd/yy HH:mm:ss} UTC}"

但不是在工具提示上:

代码语言:javascript
运行
复制
<Border Tooltip="{Binding Path=EndInterval, StringFormat={}{0:ddd MM/dd/yy HH:mm:ss} UTC}"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-13 16:43:54

好吧,对于任何遇到同样问题的人,我都会发布我最后做的事情。

因为我不能让StringFormat直接在ToolTip上工作。最后,我对它进行了样式化,并将StringFormat直接应用到ToolTip中的TextBlock中:

代码语言:javascript
运行
复制
<Border ..>
  <Border.ToolTip>
    <ToolTip>
       <TextBlock>
          <TextBlock.Style>
             <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Text" 
                        Value="{Binding Path=SomeDate, 
                                        Converter={StaticResource ToLocalTime}}"/>
                   <Style.Triggers>
                       <DataTrigger Binding="{Binding ShowUtc}" Value="True">
                           <Setter Property="Text" Value="{Binding Path=SomeDate, 
                                   StringFormat={}{0:ddd MM/dd/yy HH:mm:ss} UTC}"/>
                       </DataTrigger>
                   </Style.Triggers>
              </Style>
           </TextBlock.Style>
       </TextBlock>
     </ToolTip>
  </Border.ToolTip>
</Border>
票数 0
EN

Stack Overflow用户

发布于 2014-01-13 18:30:08

因为绑定是到ToolTip的,所以它在隐式地设置内容属性。ToolTips具有要格式化时使用的ContentFormatString属性。我还没有测试过它,但我认为下面的方法会有效的。

代码语言:javascript
运行
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2016-10-30 20:53:30

最后,我不得不求助于一个转换器,因为我没有找到如此有效的东西。

代码语言:javascript
运行
复制
using System;
using System.Globalization;
using System.Windows.Data;

namespace Converters
{
    [ValueConversion(typeof(DateTime), typeof(string))]
    public class DateTimeStringFormatConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is DateTime && parameter != null)
                return ((DateTime)value).ToString(parameter.ToString());
            return value;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
}

使用

代码语言:javascript
运行
复制
<Border ToolTip="{Binding DateTime, Converter={StaticResource DateTimeStringFormatConverter}, ConverterParameter=yyyy}"/>

简单,但有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21050399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档