目前我有一个绑定到byte
属性的文本框。如果用户在0到255之间输入,则应用程序将按预期运行,并且属性的setter将执行。
但是,如果用户输入256或更大,则属性的setter不会执行。所有发生的事情是TextBox变成红色轮廓。我认为这表明它是无效的值。
但这还不够好。我需要向用户显示消息框或一些注释,以通知他们这是一个无效的值。我需要做些什么才能实现这一目标?
答案 0 :(得分:2)
您需要在页面上添加验证摘要控件。
默认情况下会隐藏它,但是当发生验证错误时(如果输入大于255的值),它将显示告诉用户出了什么问题。
有several such controls available for WPF,您需要对它们进行评估并选择适合您的方法。您可能需要在数据层上设置一些属性来控制显示的确切错误消息。
答案 1 :(得分:1)
另一种可能性是定义文本框的TextChanged事件,以便每次文本更改时它都会执行Int32.Parse。如果值超过255,则可以触发消息框。
如果你想表达意思,你可以将最大长度设为两个字符,并强制用户以十六进制输入数字。
答案 2 :(得分:0)
我有一篇文章涵盖了你的要求。标题可能看起来与您要求的内容不符,但它恰好演示了您要求的功能。
How to disable a Button on TextBox ValidationErrors in WPF
这将向您展示如何不仅在TextBox周围有红色,还有消息如何。
答案 3 :(得分:0)
您可以向控件或窗口添加验证错误处理程序。
在窗口构造函数中:
this.AddHandler(Validation.ErrorEvent, new RoutedEventHandler(OnValidationError));
处理程序:
private void OnValidationError(Object sender, RoutedEventArgs e)
{
if (e.OriginalSource is DependencyObject)
{
DependencyObject instance = e.OriginalSource as DependencyObject;
if (Validation.GetHasError(instance))
{
System.Collections.ObjectModel.ReadOnlyObservableCollection<ValidationError> errors = Validation.GetErrors(instance);
// todo build message from errors and display
}
}
}