Time validation in TextBox. Validating a textbox for some regular expression

前端 未结 3 795
北荒
北荒 2021-01-28 11:38

I\'ve to make a textbox(WPF) for entering time with validation. I want to enter a regular expression validation for time (6:12 am).

相关标签:
3条回答
  • 2021-01-28 12:15

    How about this one :

    class TimeTextBox : TextBox
    {
        public Boolean IsProperTime { get; set; }
    
        protected override void OnTextChanged(TextChangedEventArgs e)
        {
            DateTime time;
    
            if (String.IsNullOrEmpty(Text) || !DateTime.TryParse(Text, out time))
            {
                IsProperTime = false;
            }
            else
            {
                IsProperTime = true;
            }
    
            UpdateVisual();
    
            base.OnTextChanged(e);
        }
    
        private void UpdateVisual()
        {
            if (!IsProperTime)
            {
                BorderBrush = Brushes.Red;
                BorderThickness = new Thickness(1);
            }
            else
            {
                ClearValue(BorderBrushProperty);
                ClearValue(BorderThicknessProperty);
            }
        }
    }
    

    You can change the time parsing logic in there.

    0 讨论(0)
  • 2021-01-28 12:19

    check this: http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.errors.aspx for handling validation errors in controls

    Else you can implement IDataErrorInfo in your viewmodel so that the Validation is embedded to your data itself.

    0 讨论(0)
  • 2021-01-28 12:26

    Regex is not the right choice here. You ultimate do need to convert a string to a date or time. Use DateTime.TryParse() so you are always sure that if the validation allows it then the conversion will work as well.

    0 讨论(0)
提交回复
热议问题