我正在显示有关DataGrid
已存在的案例的一些信息。
在我的MS Access
数据库中,所有日期都以DateTime
格式存储,如下所示:dd / MM / yyyy。
问题是当程序运行时DataGrid
上显示,格式更改为MM / dd / yyyy。
让我迷失的是,当我在将MessageBox
分配给DataTable
之前,在DataGrid
显示相关单元格的内容时,我的格式正确(日/月/年)。
我尝试更改DateTimeMode
,但会显示相同的格式。
有人提出了解决此问题的提示吗?我给你下面的代码:
DataTable temp = dt.Clone();
temp = (from nardin in dt.AsEnumerable().Distinct()
where nardin["NUMERO CLIENT"].ToString() == _centerID.ToString()
select nardin).CopyToDataTable();
RemoveDuplicates(temp, "NUMERO DOSSIER");
foreach (DataRow row in temp.Rows)
{
MessageBox.Show(row["DATE INTERVENTION"].ToString()); //this gives me the DateTime format i'd like to display
}
existingCase.ItemsSource = temp.AsDataView(); //once assigned to the DataGrid the DateTime format is not the same as above
实际上,DataGrid在xaml文件中声明如下:
<DataGrid SelectionUnit="FullRow" SelectedItem="{Binding SelectedBI, Mode=TwoWay}" AutoGenerateColumns="True" Margin="0,167,12,167" Name="existingBI" Width="588" HorizontalAlignment="Right">
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="MouseDoubleClick" Handler="resultDataGridBI_MouseDoubleClick"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
我将DataTable绑定到:existingCase.ItemsSource = temp.AsDataView();
事先,谢谢!
答案 0 :(得分:1)
试试这个:
在Startup
文件中添加App.xaml
事件句柄:
<Application x:Class="DataGridAddRows.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup" ... />
在App.xaml.cs
中添加:
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag)));
}
}
现在,应根据当前文化显示日期。
Note:
StringFormat
仅适用于 以显示日期。如果您要编辑带有日期的单元格,例如格式dd/MM/yyyy
,以dd/MM/yyyy
的方式输入数据,系统将采用格式MM/dd/yyyy
,因此错误将显示为红色Border
。
答案 1 :(得分:0)
如果没有显示DataGrid
中显示DateTime
对象的列的代码,则很难回答,但我会假设您绑定了该值。要在绑定上设置字符串格式,您可以执行以下操作:
<DataGrid ItemsSource="{Binding Items}">
<DataGrid.Columns>
<DataGridTextColumn Header="Value" Binding="{Binding Value,
StringFormat={}{0:dd/MM/yyyy}}" />
</DataGrid.Columns>
</DataGrid>