Изменить Validation.ErrorTemplate в коде - PullRequest
0 голосов
/ 22 июля 2010

У меня есть UserControl, который содержит TextBox. Свойство TextBox.Text привязано к данным и проверено. Когда происходит Validation.Error, я хотел бы отредактировать Validation.ErrorTemplate. В частности, я хотел бы украсить его ломаной линией.

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

1 Ответ

2 голосов
/ 23 июля 2010

Вам просто нужно установить ErrorTemplate в TextBox. Если проверка не удалась для одной из привязок в TextBox, шаблон ErrorTemplate будет отображаться в слое adorner. Вы можете нарисовать волнистую линию, выполнив что-то вроде этого:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...