Validation 正在验证表单页上输入的数据:WPF

Validation 正在验证表单页上输入的数据:WPF,validation,wpf-controls,binding,Validation,Wpf Controls,Binding,我有大约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" Wid

我有大约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>
现在,问题是:我有没有办法一次性验证这20个控件,或者我需要手动定义它们的
BindingExpression
并检查验证错误???

使您自己的用户控件成为“OwnTextBox”。从TextBox(
OwnTextBox:TextBox
)继承它,并在其中定义DependencyProperty Validate。然后您只需记住,文本框是逻辑树的一部分,并从中进行搜索。

创建您自己的用户控件“OwnTextBox”。从TextBox(
OwnTextBox:TextBox
)继承它,并在其中定义DependencyProperty Validate。然后您只需记住,文本框是逻辑树的一部分,并从中进行搜索

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();
        }