目前我有一个绑定到byte
属性的文本框。如果用户输入的值介于 0 和 255 之间,则应用程序将按预期运行,并执行属性的设置器。
但是,如果用户输入 256 或更大的值,则不会执行该属性的设置器。所发生的只是 TextBox 变成红色轮廓。我认为这是表明它是无效值。
不过这还不够好。我需要向用户显示一个消息框或一些注释,以通知他们这是一个无效值。我需要做什么才能做到这一点?
您需要在页面上添加一个验证摘要控件。
默认情况下这将被隐藏,但是当发生验证错误时(在这种情况下,当输入大于 255 的值时)它会出现,告诉用户出了什么问题。
WPF有几个这样的控件可用,您需要评估它们并选择适合您的控件。您可能需要在数据层上设置一些属性来控制显示的确切错误消息。
另一种可能性是定义文本框的 TextChanged 事件,以便在每次文本更改时执行 Int32.Parse。如果值超过 255,它会触发一个消息框。
如果您想变得刻薄,您可以将最大长度设为两个字符,并强制用户以十六进制输入数字。
我有一篇文章涵盖了您的要求。标题可能看起来与您所要求的不匹配,但它恰好演示了您所要求的功能。
如何在 WPF 中的 TextBox ValidationErrors 上禁用按钮
这将向您展示如何不仅在 TextBox 周围使用红色,而且还向您展示如何显示消息。
您可以将验证错误处理程序添加到控件或窗口。
在窗口构造函数中:
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
}
}
}