如何检查ValidationResults按钮点击

问题描述:

我有一堆用数据验证文本框所有如下:如何检查ValidationResults按钮点击

XAML

<TextBox> 
    <TextBox.Text> 
     <Binding Path="Name" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged"> 
      <Binding.ValidationRules> 
       <local:Validation2/> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 

C#

public class Validation2 : ValidationRule 
{ 
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) 
    { 
     double result; 
     return double.TryParse(value.ToString(), out result) == true ? new ValidationResult(true, null) : new ValidationResult(false, "error"); 
    } 
} 

这工作得很好,每当我在文本框中输入除数字之外的任何内容都会弹出一个错误消息。现在我有一个按钮来发送“表单”,我希望按钮在做任何事情之前检查是否有任何验证错误。我将如何去做这件事。

在将新值应用于源属性之前进行验证。在你的情况 - 当你改变财产。在wpf也有几个more的情况下,但没有OnFormClosing或类似。它的设计是:控制属性可能会绑定到其他控件属性(或绑定到相同属性的几个控件),因此最近在您更改焦点时进行验证。

如果你没有交叉绑定,一个属性只绑定到一个控件,那么当表单即将关闭时,你可以利用UpdateSourceTrigger.Explicit - 每个绑定都调用UpdateSource()

其他解决方案将不会显示错误为弹出窗口。错误状态可能是红色边框或附近的!图标。

我自己根本不使用验证机制。相反,我拥有自我验证的控件,例如TextBox与属性IsDouble启用自动验证double值和属性GetDouble,以解析值。我更喜欢在最后验证所有内容,同时显示实际状态,如果验证结果为好或不对用户(红色边框,闪烁标题等。每控制)。

+0

我使用单词形式是一个糟糕的主意。基本上我有一个窗口,有一堆文本框和一个按钮,可以创建输入的所有数据的XML文件。如果有任何验证错误,我希望按钮不要创建文件。 – user3692104 2014-09-05 15:08:23

你可以做到Clientside和Serverside(用于禁用Javascript的剂量)。 您可以在您的Projectoptions中指定的客户端。我认为它叫做验证。在Serverside上您可以检查模型状态,然后再运行其他代码。

+0

我搞砸了标签吗?这与Javascript无关:P – user3692104 2014-09-05 13:28:29