2011-01-30 47 views
1

我有大約20個控件綁定到類的不同屬性以及驗證規則,如下所示。爲了理解,我正在編寫一個控件的代碼,因爲其他的都是一樣的。驗證表單頁面上輸入的數據:WPF

<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並檢查驗證錯誤?

回答

1

製作您自己的UserControl「OwnTextBox」。從TextBox(OwnTextBox: TextBox)繼承它並定義那裏DependencyProperty驗證。那麼你只需要記住,TextBox是邏輯樹的一部分,並從中進行搜索。