Как обрабатывать проверки на пользовательском контроле

Недавно я написал свой первый пользовательский элемент управления, текстовое поле автозаполнения. Его Controltemplate состоит из чего-то вроде этого

<Grid >
  <Border/>
  <TextBlock x:Name="Label"/>
  <TextBox x:Name="TextLabel"/>
</Grid>

Первый текстовый блок используется в качестве метки, второй показывает содержимое. TextLabel привязывается к объекту, назовем его Customer. Если в результате поиска не найден объект Customer, я хочу показать шаблон ошибки. При определении TextLabel, как это

<TextBox x:Name="PART_Editor"
    HorizontalAlignment="Stretch"
    VerticalAlignment="Center"
    Validation.ErrorTemplate="{DynamicResource ValidationErrorTemplate}"
    Style="{StaticResource TransparentTextBoxStyle}"
    Text="{Binding Path=Text, RelativeSource={RelativeSource Mode=TemplatedParent}, 
           Mode=TwoWay, ValidatesOnNotifyDataErrors=True, 
           NotifyOnValidationError=True, 
           ValidatesOnDataErrors=True, 
           UpdateSourceTrigger=PropertyChanged}" >                                                                                
</TextBox>

Проверка сделана, и шаблон ошибки текстового поля показан. К сожалению, красная граница только вокруг внутреннего TextBox, а не вокруг всего пользовательского элемента управления, который выглядит просто нехорошо.

Мне было интересно, как достичь двух вещей:

  • Как вызвать ErrorTemplate CustomControl при сбое одной из дочерних проверок?
  • Нужно ли указывать все эти свойства NotifyOnValidationerror или можно отлавливать все ошибки на уровне объекта и отображать один и тот же ErrorTemplate?

Если вам нужна дополнительная информация, пожалуйста, просто спросите

0 ответов

Другие вопросы по тегам