WPF验证自定义触发器

时间:2012-12-05 10:22:23

标签: wpf validation

我有几个已启用验证的绑定TextBox。

  <TextBox Text="{Binding Name, ValidatesOnDataErrors=True" />
  <TextBox Text="{Binding Password, ValidatesOnDataErrors=True" />
  <Button Command="{Binding OkCommand}"/>

当打开视图时,我默认这些文本框无效,因为我对它们进行了NotEmpty vlaidation。

我希望验证仅在最后时刻发生,当我单击“确定”时。 如何从代码触发验证(Button`s Command)?

1 个答案:

答案 0 :(得分:0)

您可以通过为此绑定设置UpdateSourceTriggerExplicit来明确触发验证 -

<TextBox x:Name="textBox1"
         Text="{Binding Name, ValidatesOnDataErrors=True, 
                              UpdateSourceTrigger=Explicit}"/>
<TextBox x:Name="textBox2"
         Text="{Binding Password, ValidatesOnDataErrors=True, 
                                  UpdateSourceTrigger=Explicit}" />
<Button Click="Button_Click"/>

在处理程序中,您必须显式更新源代码 -

private void Button_Click(object sender, RoutedEventArgs e)
{
    textBox1.GetBindingExpression(TextBox.TextProperty).UpdateSource();
    textBox2.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}