2016-08-11 2 views
1

Ich habe eine DataGridTemplateColumn (programmgesteuert erstellt) mit einem TextBlock für das CellTemplate und einen DatePicker für das CellEditingTemplate.Erlaube dem Benutzer, Datum von DatePicker zu löschen

Der DatePicker-Wert ist an eine DateTime gebunden ?.

Wenn die Zelle ein Datum enthält, an dem das Raster geladen wird, führt das Löschen des Datums zu einem Validierungsproblem - der leere Wert wird nicht an die gebundene Eigenschaft gesendet. Gibt es eine Einstellung auf dem DatePicker, um leere Werte zuzulassen (ich konnte keinen finden)?
Ist ein Konverter erforderlich, um mit der Nullable-Eigenschaft zu arbeiten?

Vielen Dank für jede Einsicht -

Antwort

0

ich über das gleiche Problem kam, aber es war mit einer Textbox für Menge des Produkts eingeben. Es hatte eine ganze Zahl als binded Eigenschaft. Es hat mit einigen eingegebenen Mengen korrekt gehandelt. Wenn das Textfeld nach der Eingabe eines Werts leer war, hatte die Eigenschaft den zuvor eingegebenen Wert als aktuellen Wert.

Ich löste dies, indem ich eine Eigenschaft string type als binded -Eigenschaft setzte.

Sie können das gleiche tun. Binden Sie eine String-Eigenschaft mit DatePicker. Da das Datum mit DatePicker ausgewählt wird, sind Sie immer sicher das Datumsformat. Außerdem können Sie DatePickerTextBox nur in App-Stilen lesen, damit der Benutzer kein Datum durch Eingabe eingeben kann.

Und auf diese Weise, wenn Sie die DatePicker löschen, enthält die zugrundeliegende gebundene Eigenschaft null oder leere Zeichenfolge, und ich denke, das ist, was Sie wollen.

können Sie diese Zeichenfolge Eigenschaft in

DateTime.Parse Methode verwenden, um ein Äquivalent Datetime Objekt zu erhalten. Versuchen Sie, das Datum im try catch-Block zu analysieren, um eine leere/null-Zeichenfolge zu behandeln.

+0

Danke für die Antwort. Wenn ich tiefer in den Code eintauche, habe ich einen Konverter gefunden. Ich habe das Problem in ConvertBack() behoben: return 'null' statt' string.Empty'. – Number8

+0

Großartig. Gut zu wissen, dass Sie es selbst lösen konnten. Sie haben nicht erwähnt, dass Sie bereits einen Konverter-Setup in Ihrem Code hatten. –

Verwandte Themen