【问题标题】:How can I format WPFToolkit.DataGridTextColumn by full date?如何按完整日期格式化 WPFToolkit.DataGridTextColumn?
【发布时间】:2012-06-10 16:40:37
【问题描述】:

我已经搜索并尝试了许多方法来格式化出生日期列,不仅按月份和日期,还考虑到年份。

我不敢相信这这么难做到。

我创建了几个类型转换器,它们将字符串“MM/dd/yyyy”转换为日期时间,尝试转换为没有“/”字符的字符串,然后转换为带有年份的字符串:“yyy/MM /dd”。最后一个确实有效,但我不能使用它,因为日期必须以“MM/dd/yyyy”格式显示。

我找不到在单个列上轻松实现自定义排序 (ICoparable) 的方法。

我还搜索了 Stack Overflow 和其他网站,我很惊讶我找不到答案。

非常感谢您的帮助!

这是我的代码:

<dg:DataGrid Grid.Row="10" Grid.ColumnSpan="3" ItemsSource="{Binding Path=Members}"
  Visibility="{Binding Path=ShowMemberResults, Converter={StaticResource boolTovisConverter}}"
  SelectionMode="Single" SelectionUnit="FullRow"
  HorizontalAlignment="Left"
  Name="MemberGrid" AutoGenerateColumns="False" IsReadOnly="True"
  SelectedItem="{Binding Path=SelectedMemberItem}" MaxHeight="200">
  <dg:DataGrid.Columns>
    <dg:DataGridTextColumn Header="Member ID" Binding="{Binding Path=MemberID}" Width="100"/>
    <dg:DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}" Width="100"/>
    <dg:DataGridTextColumn Header="Middle" Binding="{Binding Path=MiddleInitial}" Width="50"/>
    <dg:DataGridTextColumn Header="Last Name" Binding="{Binding Path=LastName}" Width="100"/>
    <dg:DataGridTextColumn Header="Suffix" Binding="{Binding Path=Title}" Width="50"/>
    <dg:DataGridTextColumn Header="DOB" Binding="{Binding Path=DOB, Converter={StaticResource dateConverter}}" Width="80"/>
    <dg:DataGridTextColumn Header="Relationship" Binding="{Binding Path=Relationship}" Width="100"/>
    <dg:DataGridTextColumn Header="Group Name" Binding="{Binding Path=GroupName}" Width="225"/>
    <dg:DataGridTextColumn Header="Address " Binding="{Binding Path=Addr1}" Width="180"/>
    <dg:DataGridTextColumn Header="City" Binding="{Binding Path=City}" Width="120"/>
    <dg:DataGridTextColumn Header="State" Binding="{Binding Path=State}" Width="45"/>
    <dg:DataGridTextColumn Header="Zip" Binding="{Binding Path=Zip}" Width="50"/>
    <dg:DataGridTextColumn Header="SSN" Binding="{Binding Path=SSN}" Width="100"/>
    <dg:DataGridTextColumn Header="Family Link ID" Binding="{Binding Path=FamilyLinkID}" Width="100"/>
  </dg:DataGrid.Columns>
</dg:DataGrid>

【问题讨论】:

    标签: wpf datetime sorting datagrid wpftoolkit


    【解决方案1】:

    使用StringFormatter绑定数据:

     <wpfToolkit:DataGridTextColumn Header="Your Header" Binding="{Binding TheDate,StringFormat={}\{0:dd/MM/yyyy hh:mm\}}" />
    

    【讨论】:

    • 交易是数据库将其作为字符串返回,因为它需要放在 Dictionary 中用于缓存目的(不是我的代码)。我试图将其转换为 DateTime 希望排序将使用 DateTime 而不是字符串属性。我所做的只是创建另一个属性作为 DateTime 并将其绑定到该属性。所以实际上,我没有提供足够的信息:-(
    • 啊,那是我名单上的下一个,但你抢先了。不需要悲伤的脸,现在已经修复了,所以快乐的脸::)
    【解决方案2】:
    <TextBlock Text="{Binding MyText,StringFormat={}\{0:dd-MM-yyyy HH:mm tt\}}" />
    

    还可以查看更多绑定字符串格式选项

    http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

    【讨论】:

    • 您能否分享您正在寻找答案的代码片段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    相关资源
    最近更新 更多