2016-05-27 2 views
0

Ich habe einen CalendarDatePicker, dessen Date-Eigenschaft an einen Konverter gebunden ist. Ich will es nicht um das Datum zu zeigen, wenn das Datum Standard ist (01-01-0001)Wie lösche ich das an einen CalendarDatePicker gebundene Datum, wenn bestimmte Bedingungen in UWP auftreten?

Mein Code

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; 
     } 
    } 
}  

aber standardmäßig heutige Datum ist es set. Welchen Wert kann ich einstellen, um das Datum zu löschen?

+0

was meinst du standardmäßig? Möchten Sie, dass Ihr CalendarDatePicker ein Datum aus der Vergangenheit auswählt? – Flaugzig

+0

Nein, anfangs möchte ich es gelöscht, wenn mein DateTime-Wert 01-01-0001 ist. Und wenn nicht, sollte es auf das entsprechende Datum gesetzt werden. – AbsoluteSith

+0

Wie hast du den Wert deiner 'DateTime' bekommen? Was meinst du standardmäßig ist dieser Wert 01-01-0001? Diese 'DateTime' ist Ihre selbstdefinierte Variable oder etwas? –

Antwort

1

Aus der Diskussion, die wir früher hatten, glaube ich, dass Sie die Date der CalendarDatePicker nach dem Wert, der von einem Server erhalten hat, aber zunächst diesen Wert auf "0001-01-01" durch gesetzt wird Standard.

So können Sie es wie folgt tun:

<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> 

Code hinter:

private DateTime dateTime; 

public MainPage() 
{ 
    this.InitializeComponent(); 
    dateTime = new DateTime(0001, 01, 01); 
} 

Diese Variable dateTime ist von mir falsch und wird in der Code-behind gesetzt, und der Wandler ist wie folgt :

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; 
    } 
} 

aber bewusst sein, dass die Date Nachteile sind Von MinDate und MaxDate trainiert, wenn Date kleiner als MinDate ist, wird der Wert auf MinDate festgelegt. Wenn Date größer als MaxDate ist, wird der Wert auf MaxDate festgelegt. Wenn Sie also das Datum hier beispielsweise auf "0010-01-02" setzen und Ihre MinDate auf "2000-01-01" eingestellt ist, wird bei der Rückgabe dieses Datums in Ihrer Converter die CalendarDatePicker "01.01.2000" angezeigt. .

Weitere Informationen zu diesem Steuerelement finden Sie unter CalendarDatePicker class.

Verwandte Themen