Validation.ErrorTemplate在TextBox.Text顶部显示
时间: 2024-01-21 13:16:36 浏览: 76
Textbox验证控件
如果你想在 TextBox 的顶部显示 Validation.ErrorTemplate,可以使用 AdornerDecorator 控件来装饰 TextBox。在 AdornerDecorator 中添加一个 AdornerLayer,并将 Validation.ErrorTemplate 添加到该 AdornerLayer 中。
以下是一个示例:
```xml
<Grid>
<AdornerDecorator>
<TextBox>
<TextBox.Text>
<Binding Path="SomeProperty"
UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True"
ValidatesOnExceptions="True" />
</TextBox.Text>
</TextBox>
<AdornerDecorator.AdornerLayer>
<AdornerLayer>
<ContentControl Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=AdornerDecorator}, Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent}"
Template="{StaticResource ValidationTemplate}" />
</AdornerLayer>
</AdornerDecorator.AdornerLayer>
</AdornerDecorator>
</Grid>
```
在上面的示例中,我们将 AdornerDecorator 包含在 TextBox 内部,并在 AdornerDecorator 中添加了一个 AdornerLayer。在 AdornerLayer 中,我们添加了一个 ContentControl 控件,它绑定到了 TextBox 上的 Validation.Errors 集合的当前项的 ErrorContent 属性,并将 ValidationTemplate 资源设置为其模板。
ValidationTemplate 可以定义如下:
```xml
<ControlTemplate x:Key="ValidationTemplate">
<Grid>
<Border BorderBrush="Red" BorderThickness="2" CornerRadius="2">
<AdornedElementPlaceholder />
</Border>
<Polygon Points="0,-5 5,0 10,-5" Fill="Red" />
</Grid>
</ControlTemplate>
```
在 ValidationTemplate 中,我们使用了一个具有红色边框和红色三角形的 Border 来装饰 AdornedElementPlaceholder。红色三角形用于指示错误的位置。
阅读全文