【问题标题】:Date text format in WPF DataGrid bound to XML fileWPF DataGrid 中的日期文本格式绑定到 XML 文件
【发布时间】:2015-06-28 17:20:53
【问题描述】:

我有一个数据网格绑定到 WPF 中的 xml 文件。我不知道如何格式化出现在我的一个 DataTextColumns 中的日期。我已经尝试过转换器和'stringformat = d',但似乎没有任何效果。有任何想法吗?

“生日”文本列中的数据显示为“dd/mm/yyyy hh:mm:ss AM/PM”,因为这是它在 xml 文件中的存储方式。

但是我希望它显示为“dd/mm/yyyy”。

这是我的 xaml。这是一个简单的绑定,不需要任何代码。

<DataGrid Name="currentCrewGrid" DataContext="{StaticResource CrewInfo}" ItemsSource="{Binding XPath=/Names/Name[@isActive\=\'True\']}" AutoGenerateColumns="False" >
 <DataGrid.Columns>
   <DataGridTextColumn IsReadOnly="True" Header="Birthday" Binding="{Binding XPath=Birthday}"/>
 </DataGrid.Columns> 
</DataGrid>

【问题讨论】:

  • 日期以字符串形式出现,因此您需要先将其转换为有效的 DateTime 对象,然后再对其使用格式字符串。将您的 XML 序列化为对象并绑定到这些对象可能会更有效率。

标签: c# xml wpf date datagrid


【解决方案1】:

您可以为生日列使用转换器,将日期转换为所需的格式。

Binding="{Binding XPath=Birthday, Converter={StaticResource birthdayConverter}}"

public class BirthdayConverter : IValueConverter
 {
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {
         //Convert date to desired format.
     }

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     {
        // Convert back.
     }
 }

【讨论】:

  • 通常情况下,当绑定中的 StringFormat 可以完成这项工作时,我会拒绝任何只说“使用转换器”的人。您说得对,但没有准确解释为什么在这种情况下需要这样做。
  • 就是这样。我之前的转换器一定做错了什么。谢谢
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2011-03-08
  • 2011-05-02
相关资源
最近更新 更多