/ / Wie kann man das DateTimePicker-Objekt beim Laden leer lassen (ein Datum auswählen), wenn DateTime den Wert null hat (01/01/0001), aber bei einem Wert füllen? - c #, xaml, datetime, datenbindung, datetimepicker

Wie kann das DateTimePicker-Objekt beim Laden leer gelassen werden (Wählen Sie ein Datum), wenn DateTime Null ist (01/01/0001), aber gefüllt wird, wenn ein Wert vorhanden ist? - c #, xaml, datetime, Datenbindung, datetimepicker

Ich versuche ein DateTimePicker - Objekt zu bekommenFüllen Sie den Standardtext (Wählen Sie ein Datum aus), wenn kein Datum aus der Datenbank zurückgegeben wird. Wenn ein Datum in der Datenbank vorhanden ist, wird das Feld mit diesem Datum gefüllt.

Ich schreibe Code, der zwei Wege bindetSelectedDate-Option für eine DateTime-Eigenschaft im CodeBehind. Es funktioniert ordnungsgemäß und füllt das Feld mit 01/01/0001, da dies die Null von DateTime-Objekten ist. Ich habe versucht, es in eine OneWayToSource zu ändern und das Datum einfach zu binden, wenn es größer als 01/01/0001 ist.

Irgendein Vorschlag?

Vielen Dank für die Hilfe! Hier ist die Lösung, die ich gefunden habe.

[ValueConversion(typeof(DateTime), typeof(DateTime))]
class DateTimeNullConverter: IValueConverter
{
public object Convert (object value, Type targetType, object parameter, Culture culture)
{
if (value != null)
{
DateTime dateTime = (DateTime)value;
if (dateTime.Year.ToString == "1")
return null;
else
return dateTime;
}
else
{
return null;
}
}

public object ConvertBack (object value, Type targetType, object parameter, Culture culture)
{
DateTime convertDateTime;
if (value == null)
{
convertDateTime = new DateTime();
}
else
{
convertDateTime = (DateTime) value;
}

return convertDateTime;
}
}

Antworten:

0 für die Antwort № 1

Erstellen Sie einen DateBlankConverter-Konverter, der an dasselbe Steuerelement bindet:

 <DatePicker x:Name="DatePickerInstance"
Visibility="{Binding ElementName=DatePickerInstance,
Converter={StaticResource DateBlankConverter}, ConverterParameter={Binding Date}}"/>

Überprüfen Sie im Konverter, ob das Datum null ist, um den DatePicker ein- oder auszublenden oder die gewünschte Eigenschaft zu ändern.


0 für die Antwort № 2

Sie könnten mit etwas Code im Setter und Getter Ihres Eigentums versuchen

private DateTime? _date;
public DateTime? Date
{
get
{
if (null == _date)
{
//Set some initial value
//or just return some default value without setting the property
}
return _date;
}
set
{
if (value != _date)
{
_date = value;
this.OnPropertyChanged("Date");
}
}
}

0 für die Antwort № 3

Vielen Dank für die Hilfe! Hier ist die Lösung, die ich gefunden habe.

[ValueConversion(typeof(DateTime), typeof(DateTime))]
class DateTimeNullConverter: IValueConverter
{
public object Convert (object value, Type targetType, object parameter, Culture culture)
{
if (value != null)
{
DateTime dateTime = (DateTime)value;
if (dateTime.Year.ToString == "1")
return null;
else
return dateTime;
}
else
{
return null;
}
}

public object ConvertBack (object value, Type targetType, object parameter, Culture culture)
{
DateTime convertDateTime;
if (value == null)
{
convertDateTime = new DateTime();
}
else
{
convertDateTime = (DateTime) value;
}

return convertDateTime;
}
}