我要制作一个文本框(WPF),以便通过验证输入时间。 我想在时间(早上6:12)输入正则表达式验证。
答案 0 :(得分:1)
检查:http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.errors.aspx以处理控件中的验证错误
否则,您可以在viewmodel中实现IDataErrorInfo,以便将验证嵌入到您的数据本身。
答案 1 :(得分:1)
这个怎么样:
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);
}
}
}
您可以在那里更改时间解析逻辑。
答案 2 :(得分:1)
正则表达式不是正确的选择。您最终需要将字符串转换为日期或时间。使用DateTime.TryParse(),这样你总能确保如果验证允许,那么转换也会起作用。