0

目前我有一个绑定到byte属性的文本框。如果用户输入的值介于 0 和 255 之间,则应用程序将按预期运行,并执行属性的设置器。

但是,如果用户输入 256 或更大的值,则不会执行该属性的设置器。所发生的只是 TextBox 变成红色轮廓。我认为这是表明它是无效值。

不过这还不够好。我需要向用户显示一个消息框或一些注释,以通知他们这是一个无效值。我需要做什么才能做到这一点?

4

4 回答 4

2

您需要在页面上添加一个验证摘要控件。

默认情况下这将被隐藏,但是当发生验证错误时(在这种情况下,当输入大于 255 的值时)它会出现,告诉用户出了什么问题。

WPF有几个这样的控件可用,您需要评估它们并选择适合您的控件。您可能需要在数据层上设置一些属性来控制显示的确切错误消息。

于 2012-04-13T14:11:00.073 回答
1

另一种可能性是定义文本框的 TextChanged 事件,以便在每次文本更改时执行 Int32.Parse。如果值超过 255,它会触发一个消息框。

如果您想变得刻薄,您可以将最大长度设为两个字符,并强制用户以十六进制输入数字。

于 2012-04-13T14:24:19.553 回答
0

我有一篇文章涵盖了您的要求。标题可能看起来与您所要求的不匹配,但它恰好演示了您所要求的功能。

如何在 WPF 中的 TextBox ValidationErrors 上禁用按钮

这将向您展示如何不仅在 TextBox 周围使用红色,而且还向您展示如何显示消息。

于 2012-04-13T15:29:47.137 回答
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
            }
        }
    }
于 2012-04-13T16:53:20.163 回答