【问题标题】:Creating WPF Validation error manually手动创建 WPF 验证错误
【发布时间】:2013-10-08 12:45:55
【问题描述】:

我有一个 UI,其中包含一些绑定到 Person 类的控件。每当用户输入新信息时,业务逻辑需要检查数据库是否存在这样的人。如果不是,我需要向用户发送消息并将该文本框标记为有错误(框周围的红框)。我的问题是我可以在产生验证错误的属性的 getter 或 setter 上执行此操作吗?

感谢您的帮助!

【问题讨论】:

    标签: c# wpf validation


    【解决方案1】:

    使用IDataErrorInfo,你可以这样做,

    public class Person : IDataErrorInfo
    {
        private int age;
    
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    
        public string Error
        {
            get
            {
                return null;
            }
        }
    
        public string this[string name]
        {
            get
            {
                string result = null;
    
                if (name == "Age")
                {
                    if (this.age < 0 || this.age > 150)
                    {
                        result = "Age must not be less than 0 or greater than 150.";
                    }
                }
                return result;
            }
        }
    }
    

    在XAML中绑定如下,

    <Binding Source="{StaticResource data}" Path="Age"
                        UpdateSourceTrigger="PropertyChanged"
                        ValidatesOnDataErrors="True"   />
    

    【讨论】:

      【解决方案2】:

      您的虚拟机应该实现IDataErrorInfo 并在您的绑定中设置ValidatesOnDataError=True。然后你可以在你的 ViewModel 中验证这样的人是否存在。

      【讨论】:

        【解决方案3】:

        我在学习使用 WPF 验证时遇到了同样的问题 我通过这个tutorial找到了帮助,希望对你也有帮助!

        【讨论】:

        • -1 通常最好在 StackOverflow 上留下这样简短的答案,其中只包含一个链接。您可以在Answering section of the Help Center 中找到更多信息。如果/当您更新答案时,我将删除此反对票。
        • 感谢您的精确,很抱歉我犯了那个错误。
        • 我们每天都会学到一些新东西。正如我所说,如果您通过从链接的教程中添加一些上下文来编辑您的帖子,那么我可以删除我的反对票...我无法实际删除它直到您进行编辑 - 它是不可能。
        • 这不是我真正要谈论的,但我会删除你的努力的反对票。如果您查看this post,您会看到我提供了一个可以帮助问题作者的页面的链接,但我还将其中的一些复制到答案中以突出显示相关部分。请参阅帮助页面的Provide context for links 部分了解更多信息。
        • 感谢您提供示例并花时间帮助我改进我的帖子。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 2015-07-17
        • 1970-01-01
        • 2011-01-02
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多