我有一个CalendarDatePicker,其Date属性绑定到转换器。 如果日期是默认日期(01-01-0001)
,我不希望它显示日期我的代码
class DateTimeToCalendarDateTimeOffsetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
try
{
DateTime date = (DateTime)value;
return new DateTimeOffset(date);
}
catch (Exception ex)
{
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
try
{
DateTimeOffset dto = (DateTimeOffset)value;
return dto.DateTime;
}
catch (Exception ex)
{
return DateTime.MinValue;
}
}
}
但默认设定为今天的日期。 我可以设置什么值来清除日期?
答案 0 :(得分:1)
从我们之前的讨论中,我认为你想根据从服务器获得的值来设置Date
的{{1}},但首先将此值设置为“ 0001-01-01“默认情况下。
所以你可以这样做:
CalendarDatePicker
代码背后的代码:
<Page.Resources>
<local:DateTimeToCalendarDateTimeOffsetConverter x:Key="cvt" />
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<CalendarDatePicker x:Name="picker" Date="{x:Bind Path=dateTime,Converter={StaticResource cvt}, Mode=TwoWay}" />
</Grid>
这个变量private DateTime dateTime;
public MainPage()
{
this.InitializeComponent();
dateTime = new DateTime(0001, 01, 01);
}
是假的,并且在后面的代码中设置,转换器是这样的:
dateTime
但请注意,public class DateTimeToCalendarDateTimeOffsetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var date = (DateTime)value;
if (date == new DateTime(0001, 01, 01))
{
return null;
}
return new DateTimeOffset?(date);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var dto = (DateTimeOffset)value;
return dto.DateTime;
}
}
受Date
和MinDate
限制,如果MaxDate
小于Date
,则该值设置为{{ 1}}。如果MinDate
大于MinDate
,则该值设置为Date
。因此,如果您在此处设置日期,例如“0010-01-02”,并且您的MaxDate
设置为“2000-01-01”,则在MaxDate
中返回此日期时,{{ 1}}将显示“01/01/2000”。
有关此控件的详细信息,请参阅CalendarDatePicker class。