我有一个显示在WPF网格视图中的DataTable
。所有的列都是输入的。有一个类型为DateTime
的列,当我在图形用户界面中显示MM/dd/yyy
格式的日期时,我需要更改格式,因为对于我的用户来说,该格式非常容易出错。所需格式为dd/MM/yyyy
示例代码:
DataTable dt = new DataTable();
dt.Columns.Add("date", typeof(DateTime));
dt.Columns.Add("val", typeof(double));
GridView gv = new GridView();
gv.ItemsSource = dt.DefaultView;
与此相关的问题很多,但没有一个真正解决问题,只是将内容转换为字符串。(ie here)而不是将DataTable
修改成预期的格式(或GridView
)
用户应该在GridView
中输入日期。
发布于 2016-03-21 07:52:24
经过几个小时的搜寻,看:
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("es-ES");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("es-ES");
// Put the following code before InitializeComponent()
Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-ES");
Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES");
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
这段令人惊叹的代码必须在您的主应用程序表单中,并且它将将所有UI元素的区域性更改为您设置的元素。这将适用于.net 4.5及以上版本。
有关更多信息,请参见here。
发布于 2016-03-21 06:31:10
在xaml代码中,将GridView更改为不自动生成列。然后在xaml代码中添加列。指定绑定时,可以设置一个字符串格式。下面是我如何做到这一点的一个例子:
<DataGrid Name="CompetitionList" Grid.Column="0" Grid.Row="1" ItemsSource="{Binding CompetitionList}"
SelectedItem="{Binding SelectedCompetition}" AutoGenerateColumns="False" CanUserAddRows="False"
CanUserDeleteRows="False" BeginningEdit="CompetitionList_OnBeginningEdit">
<DataGrid.Columns>
<DataGridTextColumn Width="3*" Header="{lex:Loc Scrutinus:Text:Title}" Binding="{Binding Title}" />
<DataGridTextColumn Width="1*" Header="{lex:Loc Scrutinus:Text:Starttime}"
Binding="{Binding StartTime, StringFormat={}{0:dd.MM.yyyy HH:mm}}" />
</DataGrid.Columns>
</DataGrid>
https://stackoverflow.com/questions/36133523
复制相似问题