在WPF应用程序中,我在数据网格中显示数据。 在此数据网格中有一些DateTime值。
如果没有设置DateTime,它会显示01/01/0001,这是正常的,因为DateTime不可为空。
在这种情况下,我想显示“ - ”。
我想我需要使用转换器。
我试过了:
使用System; 使用System.Collections.Generic; 使用System.Linq; 使用System.Text; 使用System.Threading.Tasks; 使用System.Globalization; 使用System.Windows.Data;
namespace Phoenix_CRM
{
public class Converter
{
}
public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return "--/--/----";
DateTime returnVal;
if (DateTime.TryParse(value.ToString(), out returnVal))
{
if (returnVal != DateTime.MinValue)
return returnVal;
else
return "--/--/----";
}
else
return "--/--/----";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return DateTime.MinValue;
DateTime val;
if (value.ToString() == "--/--/----")
return DateTime.MinValue;
if (DateTime.TryParse(value.ToString(), out val))
return val;
else
return DateTime.MinValue;
}
}
}
我在我的XAML上添加了这个:
xmlns:converter="clr-namespace:myNameSpace"
在之后:
<DataGrid Grid.Column="0" Grid.Row="2">
<DataGrid.Columns>
<DataGridTextColumn Binding="{ Binding Path= dDate,StringFormat={}{0:dd/MM/yyyy HH:mm},Converter={converter:Converter.DateConverter}}" Header=" Date " Width="Auto" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
由于
,我的代码无法编译Converter={converter:Converter.DateConverter}}
有人可以帮我吗?
答案 0 :(得分:2)
要使用转换器,您必须将其定义为资源并使用该资源:
<Window.Resources>
<converter:DateConverter x:Key="DateConverter" />
</Window.Resources>
用法:
Converter={StaticResource DateConverter}
有关详细信息,请参阅this tutorial。
答案 1 :(得分:0)
<Window.Resources>
<converter:DateConverter x:Key="DateConverter" />
</Window.Resources>
<DataGrid Grid.Column="0" Grid.Row="2">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path= dDate,StringFormat={}{0:dd/MM/yyyy HH:mm},Converter={StaticResource DateConverter}}" Header=" Date " Width="Auto" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>