如果在UWP中出现某些条件,如何清除绑定到CalendarDatePicker的日期?

时间:2016-05-27 10:37:44

标签: c# windows-runtime uwp

我有一个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;
        }
    }
}       

但默认设定为今天的日期。 我可以设置什么值来清除日期?

1 个答案:

答案 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; } } DateMinDate限制,如果MaxDate小于Date,则该值设置为{{ 1}}。如果MinDate大于MinDate,则该值设置为Date。因此,如果您在此处设置日期,例如“0010-01-02”,并且您的MaxDate设置为“2000-01-01”,则在MaxDate中返回此日期时,{{ 1}}将显示“01/01/2000”。

有关此控件的详细信息,请参阅CalendarDatePicker class