我有大约20个控件绑定到类的不同属性以及如下所示的验证规则。为了便于理解,我正在编写一个控件的代码,因为其他控件是相同的。
<TextBox Style="{StaticResource errorStyle}" Grid.Column="0" Grid.Row="2" Grid.RowSpan="1" HorizontalAlignment="Left" Margin="110,100,0,0" Name="balesText" VerticalAlignment="Top" Width="170" >
<TextBox.Text>
<Binding Source="{StaticResource insertTransaction}" UpdateSourceTrigger="Explicit" Path="Bales">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
现在我正在以下列方式检查代码隐藏中的输入错误
BindingExpression balesBe = balesText.GetBindingExpression(TextBox.TextProperty);
balesBe.UpdateSource();
.
.
if (balesBe.HasError)
{
MessageBox.Show("Please correct Errors", "Insert Aborted");
}
else
{
Binding insertTransactionBinding = BindingOperations.GetBinding(balesText, TextBox.TextProperty);
InsertTransaction insertTransaction = insertTransactionBinding.Source as InsertTransaction;
insertMessage = insertTransaction.Add();
MessageBox.Show(insertMessage, "Transaction");
this.NavigationService.Refresh();
}
现在,问题是:有没有办法可以一次性验证这20个控件,或者我需要手动定义他们的BindingExpression
并检查验证错误?
答案 0 :(得分:1)
创建自己的UserControl“OwnTextBox”。从TextBox(OwnTextBox: TextBox
)继承它并在那里定义DependencyProperty Validate。然后你只需要记住,TextBox是逻辑树的一部分并从中进行搜索。