我为我的Datagrid列获得了这个XAML:
<DataGridTemplateColumn SortMemberPath="LiefDat" Width="110" x:Name="columnLieferDatum" >
<DataGridTemplateColumn.Header >
<Grid>
<TextBlock Text="Lieferdatum"/>
</Grid>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Width="110" x:Name="lblLiefDat" Content="{Binding LiefDat, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}"
Value="True">
<Setter TargetName="lblLiefDat" Property="Foreground" Value="white" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我从XML中读取数据,该格式的格式如下:2001-02-16T00:00:00 + 01:00
Datagrid自动将此值转换为:2.16.2001,我如何将其更改为16.2.2001,已经尝试this
修改
借助@Dominic Jonas的小费,我得到了解决方案:
Content="{Binding LiefDat}" ContentStringFormat="dd.MM.yyyy"
在XAML中这样添加它是正确的方法
答案 0 :(得分:1)
你可以这样做。 制作DateTimeConvertor,类似于:
public class DateTimeConvertor : 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();
}
}
将它介绍给Window / UserControlResources:
<Window.Resources>
<local:DateTimeConvertor x:Key="DateTimeConvertor" />
</Window.Resources>
并像这样使用它:
<Label x:Name="lblLiefDat"
Content="{Binding LiefDat, Converter={StaticResource DateTimeConvertor}}"
Margin="204,259,54,0" />
它在我这边工作得很好。我希望它有所帮助。
对于LiefDat(在你的情况下命名的属性)我已经做了这个,只是为了显示目的。
public DateTime LiefDat { get; set; }
public TestVM()
{
LiefDat = DateTime.Now;
}
答案 1 :(得分:1)
如果您设置
StringFormat=\{0:dd.MM.yy HH:mm:ss\}
然后给出硬编码的字符串格式。尝试使用:
StringFormat=d
然后动态生成格式。这是一个包含示例的小列表: http://www.csharp-examples.net/string-format-datetime/
但这要求您使用全局语言设置(就像您已经做过的那样)。