Wpf 在代码中编辑Validation.ErrorTemplate

Wpf 在代码中编辑Validation.ErrorTemplate,wpf,validation,user-controls,Wpf,Validation,User Controls,我有一个包含文本框的UserControl。Text属性是数据绑定和验证的。发生Validation.Error时,我想编辑Validation.ErrorTemplate。具体来说,我想用一条多段线来装饰它 最终目标是使UserControl在验证失败时在文本下有一条红色的曲线。我可能完全弄错了,b/c这太难了。你只需要在文本框上设置ErrorTemplate。当文本框上的某个绑定验证失败时,ErrorTemplate将显示在装饰器层中。您可以通过以下操作绘制一条曲线: <Validat

我有一个包含文本框的UserControl。Text属性是数据绑定和验证的。发生Validation.Error时,我想编辑Validation.ErrorTemplate。具体来说,我想用一条多段线来装饰它


最终目标是使UserControl在验证失败时在文本下有一条红色的曲线。我可能完全弄错了,b/c这太难了。

你只需要在文本框上设置ErrorTemplate。当文本框上的某个绑定验证失败时,ErrorTemplate将显示在装饰器层中。您可以通过以下操作绘制一条曲线:

<Validation.ErrorTemplate>
    <ControlTemplate>
        <StackPanel>
            <AdornedElementPlaceholder/>
            <Rectangle Height="7">
                <Rectangle.Fill>
                    <DrawingBrush
                            TileMode="Tile"
                            ViewportUnits="Absolute"
                            Viewport="0 0 4 7"
                            ViewboxUnits="Absolute"
                            Viewbox="0 0 4 7"
                            >
                        <DrawingBrush.Drawing>
                            <GeometryDrawing>
                                <GeometryDrawing.Pen>
                                    <Pen Brush="Red" Thickness="1"/>
                                </GeometryDrawing.Pen>
                                <GeometryDrawing.Geometry>
                                    <PathGeometry Figures="M0,2 L2,5 4,2, 6,5" />
                                </GeometryDrawing.Geometry>
                            </GeometryDrawing>
                        </DrawingBrush.Drawing>
                    </DrawingBrush>
                </Rectangle.Fill>
            </Rectangle>
        </StackPanel>
    </ControlTemplate>
</Validation.ErrorTemplate>


如果您希望行只延伸到文本框中的文本,您的策略是什么?我可以通过编程计算,但如何将其放入标记中?可以在文本框上创建一个包含文本位置的附加属性,然后将下划线位置绑定到该属性。