wpf datagrid显示日期问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf datagrid显示日期问题相关的知识,希望对你有一定的参考价值。
sql 2008里日期设置为date 只显示年月日
但是wpf datagrid显示的时候在后面自动添加了时间
怎么样可以只显示年月日呢
使用datagrid的模板列
模板里使用stringformat格式化显示格式
参考代码:
<DataGridTemplateColumn Header="Time">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Binding Path=xxx, StringFormat=\\0:d\\"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
追问binding path是指什么呢
追答就是指你绑定的那个字段啊。要记得设置datagrid的AutoGenerateColumns="False"。否则所有列都是datagrid自动生成的。
追问那其他列还是不变正常显示吧?
参考技术A 1.Time:你的数据库/实体类 字段名Binding="Binding Time,StringFormat='0:yyyy-MM-dd HH:mm:ss'"
完整示例:
<DataGridTextColumn Width="150" Binding="Binding UpdateTime,StringFormat='0:yyyy-MM-dd HH:mm:ss'">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<Label Content="出入库操作时间" HorizontalContentAlignment="Center"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
WPF DataGrid:指定默认排序
【中文标题】WPF DataGrid:指定默认排序【英文标题】:WPF DataGrid: Specify a default sort 【发布时间】:2015-06-22 14:24:10 【问题描述】:我有一个 UserControl,它基本上只包含一个 DataGrid。
在这个 DataGrid 中,我有一个事件列表(严重性 - 日期 - 消息)。
用户控件通过MVVMLight Toolkit
的ViewModelLocator
绑定。
我添加了两件事:
在我的 UserControl 资源中:
<UserControl.Resources>
<CollectionViewSource x:Key="SortedEvents" Source="Binding Events">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="EventTime" Direction="Descending"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
DataGrid 使用的:
<DataGrid ItemsSource="Binding Source=StaticResource SortedEvents" AutoGenerateColumns="False" >
我还在DataGridTextColumn.SortDirection
上设置了SortedDirection
:
<DataGridTextColumn Binding="Binding EventTime" Header="Time" IsReadOnly="True" SortDirection="Descending"/>
当我检查设计器时,我看到显示 DataGrid 已正确排序的小箭头。
但是当我启动应用程序时,列表没有排序,箭头不在这里。如果我单击该列对其进行排序,它将正确排序所有内容,它只是似乎不起作用的默认值。
我错过了什么? (这个 dataGrid/column 甚至没有命名,所以我无法尝试通过其他方式编辑它们)。
(最初我在DataGridTextColumn
上只有SortDirection
。结果相同)
【问题讨论】:
【参考方案1】:关于这里的“小箭头”检查: ColumnHeader arrows not reflected when sorting a DataGrid in XAML
对于更复杂的答案:Pre-sorting a DataGrid in WPF
我认为主要部分是:
注意:“scm”命名空间前缀映射到 System.ComponentModel,其中 SortDescription 类存在。
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
编辑
DataGrid 在其 ItemsSource 更改时删除 SortDescriptions 和 GroupDescriptions。这是必要的,因为与其他 ItemsControls 不同,DataGrid 本身会在用户单击列标题时添加 SortDescriptions,如果它们与新的 ItemsSource 不兼容,则保持原样可能会崩溃。
protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
if (SetupSortDescriptions != null && (newValue != null))
SetupSortDescriptions(this, new ValueEventArgs<CollectionView>((CollectionView)newValue));
base.OnItemsSourceChanged(oldValue, newValue);
【讨论】:
请再读一遍我的问题,你基本上给了我两件我已经做过和描述过的事情。【参考方案2】:您似乎只需将 IsLiveSortingRequested="True" 添加到您的 CollectionViewSource。
<UserControl.Resources>
<CollectionViewSource x:Key="SortedEvents" Source="Binding Events" IsLiveSortingRequested="True">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="EventTime" Direction="Descending"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
这对我有用
【讨论】:
以上是关于wpf datagrid显示日期问题的主要内容,如果未能解决你的问题,请参考以下文章