2011-01-30 3 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 элементов управления в одном go или мне нужно вручную определить их BindingExpression и проверить на ошибку проверки ??

ответ

1

Сделайте свой собственный UserControl «OwnTextBox». Наследуйте его от TextBox (OwnTextBox: TextBox) и определите там DependencyProperty Validate. Тогда вам нужно только помнить, что TextBox является частью логического дерева и выполняет поиск с него.

Смежные вопросы