如何处理自定义控件上的验证

时间:2015-09-01 17:16:17

标签: wpf mvvm errortemplate

我最近写了我的第一个自定义控件,一个自动完成文本框。它的Controltemplate包含这样的东西

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

第一个Textblock用作Label,第二个用于显示内容。 TextLabel绑定一个Object,我们称之为Customer如果底层搜索找不到Customer对象,我想显示errortemplate。像这样定义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周围,而不是整个自定义控件,看起来不太好。

我想知道如何实现两件事:

  • 当其中一个子验证失败时,如何触发CustomControl的ErrorTemplate?
  • 我是否必须指定所有这些NotifyOnValidationerror属性,或者是否可以捕获实体级别上的所有错误并显示相同的ErrorTemplate

如果您需要其他信息,请直接询问

0 个答案:

没有答案