private static void OnHasDateChanged(DependencyObject depobj, DependencyPropertyChangedEventArgs evargs)
        {
            MaskEditDateTime Target   = depobj as MaskEditDateTime;
            bool             NewValue = (bool)evargs.NewValue;

            if (!Target.IsInitialized)
            {
                return;
            }

            if (!NewValue && !Target.HasTime)
            {
                Target.HasTime = true;  // Avoids show nothing
            }
            Target.ExposeValue();
        }
        private static void OnValueChanged(DependencyObject depobj, DependencyPropertyChangedEventArgs evargs)
        {
            MaskEditDateTime Target   = depobj as MaskEditDateTime;
            DateTime         NewValue = (DateTime)evargs.NewValue;

            // This only occurs for initialization
            if (!Target.IsInitialized /* || Target.EditingValue != General.EMPTY_DATE */)
            {
                return;
            }

            Target.EditingValue = NewValue;

            if (Target.EditingAction != null)
            {
                Target.EditingAction(NewValue);
            }

            if (Target.ApplyDirectAccess && NewValue != General.Try(() => Convert.ToDateTime(Target.PerformDirectRead(Target.StorageFieldName)), DateTime.MaxValue))
            {
                Target.PerformDirectWrite(Target.StorageFieldName, NewValue);
            }
        }