我有一个使用本地数据库的.NET WPF应用程序。 我还安装了本地数据库运行时。 数据库是通过Visual Studio 2015创建的。
我的日期显示系统环境是DD / MM / YY。 当我查询数据库并在其中显示DataGrid时,日期返回为MM / DD / YYYY xx:xx:xx am / pm。
有没有办法改变这个?我是整个SQL数据库的新手。
感谢。
答案 0 :(得分:1)
如果要明确定义列,可以直接在XAML标记中将StringFormat
应用于绑定:
<DataGrid ...>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Date, StringFormat=dd\/MM\/yy}" />
...
...或者如果您使用自动生成的列,则处理AutoGeneratingColumn
事件:
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "Date") //<-- The name of your date column
{
e.Column = new DataGridTextColumn() { Header = e.PropertyName, Binding = new Binding(e.PropertyName) { StringFormat = "dd/MM/yy" } };
}
}
答案 1 :(得分:0)
制作转换器,例如
public class DateValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var dateTime = (DateTime?)value;
if (dateTime.HasValue)
{
return dateTime.Value.ToString("dd.MM.yyyy");
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
并在DataGrid
中绑定您显示转换日期的日期。
Xaml看起来像是:
<Window.Resources>
<!--Converters-->
<converters:DateValueConverter x:Key=dateValueConverter />
</Window.Resources>
<DataGrid x:Name="customDataGridName"
RowDetailsVisibilityMode="VisibleWhenSelected"
ItemsSource="{Binding SomeItems}"
CanUserAddRows="False"
EnableRowVirtualization="True"
AutoGenerateColumns="False"
<DataGrid.Columns>
<DataGridTextColumn x:Name=dateSomething
Width="Auto"
Header=Date
Binding="{Binding Date,Converter={StaticResource dateValueConverter}}" />
.
.
.
</DataGrid.Columns>
</DataGrid>