我有几个已启用验证的绑定TextBox。
<TextBox Text="{Binding Name, ValidatesOnDataErrors=True" />
<TextBox Text="{Binding Password, ValidatesOnDataErrors=True" />
<Button Command="{Binding OkCommand}"/>
当打开视图时,我默认这些文本框无效,因为我对它们进行了NotEmpty vlaidation。
我希望验证仅在最后时刻发生,当我单击“确定”时。 如何从代码触发验证(Button`s Command)?
答案 0 :(得分:0)
您可以通过为此绑定设置UpdateSourceTrigger
至Explicit
来明确触发验证 -
<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();
}