0

datepicker の値を Empty/Null/blank に設定する方法はありますか (通常はデフォルトで 01/01/0001 に設定されます)

これについてあなたの助けに感謝します!!

4

1 に答える 1

1

XAML:

コンバーター: DateTime から null へのコンバーター

  public class DateTimeToNullConverter : IValueConverter

{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if(System.Convert.ToDateTime(value).ToLongTimeString() != "12:00:00 AM")
        {
            return null;
        }
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null || value.ToString() == "")
        {
            return DateTime.Now;
        }
        return value;
    }
}
}

日付ピッカーの Text、SelectedDate、および Display Date プロパティでこのコンバーターを使用し、さらに検証するためにビューモデルで lostfocus リレー コマンドを処理します。

private void FromDateLostFocusCommandExecuted(EventArgs args)
    {
        //ClearValidationErrors();

        string inputDate =
            ((System.Windows.Controls.Primitives.DatePickerTextBox)
             (((System.Windows.RoutedEventArgs)(args)).OriginalSource)).Text;

        if (inputDate != "")
        {
            if (!IsValidDate(inputDate))
            {
                ObservableCollection<string> errors = GetErrorsCollection("FromDate");
                errors.Add("Please enter a valid From Date (M/d/yyyy)");
                RaiseErrorsChanged("FromDate");

                if (!validationErrors.Contains("FromDate"))
                {
                    validationErrors.Add("FromDate");
                }
            }
            else
            {
                ClearValidationErrors("FromDate");
                if (validationErrors.Contains("FromDate"))
                {
                    validationErrors.Remove("FromDate");
                }
            }
        }
        else
        {
            ClearValidationErrors("FromDate");
            if (validationErrors.Contains("FromDate"))
            {
                validationErrors.Remove("FromDate");
            }
        }
    }
于 2012-04-18T14:29:15.850 に答える