线程中的ApplicationException不会在WPF C#app中触发验证样式

时间:2015-05-01 18:55:41

标签: c# wpf multithreading validation exception-handling

我正在开发一款允许用户输入需要符合某些标准的ID值的应用。在视图模型中,我有一个属性来保存这个值,它执行一些初始验证(工作正常),然后启动一个线程,自动查找另一个系统中输入的值。最后一部分比较慢,所以我把它放在另一个线程中。问题是当在该线程中抛出with时,它不会触发表单中文本框的验证样式。这是我的财产的样子:

ApplicationException

并不是说它似乎有那么重要,但这是该线程中发生的事情:

    private string idNumber;
    public string IdNumber
    {
        get { return idNumber; }
        set
        {
            idNumber = value;
            OnPropertyChanged("IdNumber");
            if (String.IsNullOrEmpty(idNumber))
            {
                throw new ApplicationException("The ID Number is required.");
            }
            if (idNumber.Length < 8)
            {
                throw new ApplicationException("The ID Number should be 8 alphanumeric characters.");
            }
            Thread Validate = new Thread(ValidateIdNumber);
            Validate.Start();
        }
    }

那么,是否有可能以某种方式将此 private void ValidateSecurity() { if (this.BadIdNumbers.Contains(this.IdNumber)) { throw new ApplicationException("The ID Number you have entered is on either the Bad ID Number list."); } OurAutomationLibrary AutomatedApp = new OurAutomationLibrary(this.user, this.pass); AutomatedApp.Get(this.IdNumber); if (AutomatedApp.GetFile().Contains("ID-NOT-ON-FILE")) { AutomatedApp.Quit(); throw new ApplicationException("The ID Number you have entered is not on file."); } if (AutomatedApp.Read(2, 70, 5).Trim() == "") { AutomatedApp.Quit(); throw new ApplicationException("This ID Number is below $1.00."); } AutomatedApp.Quit(); } } 路由到该文本框,以便触发验证样式?

同样,初始验证有效,但后者没有。此外,我需要将该集合检查到集合中的初始验证。

1 个答案:

答案 0 :(得分:0)

在UI中绑定属性并使用异常消息更新该属性。