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).
views:
78answers:
3
A:
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.
Veer
2010-06-15 10:04:05
A:
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.
decyclone
2010-06-15 12:10:47
+1
A:
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.
Hans Passant
2010-06-15 12:19:24