Проверка WPF: Как сохранить правильный размер границы ErrorTemplate - PullRequest
0 голосов
/ 29 июля 2010

У меня есть следующий пользовательский Validation.ErrorTemplate:

            <Setter Property="Validation.ErrorTemplate">
            <Setter.Value>
                <ControlTemplate>
                    <DockPanel LastChildFill="True">
                        <Label DockPanel.Dock="Bottom" Foreground="Red" Content="{Binding ErrorContent}" Margin="0,5,0,0" Background="LightGray"/>
                        <Border BorderBrush="Red" BorderThickness="2">
                            <AdornedElementPlaceholder/>
                        </Border>
                    </DockPanel>

                </ControlTemplate>
            </Setter.Value>
        </Setter>

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

1 Ответ

1 голос
/ 30 июля 2010

Измените HorizontalAlignment of Border со значения по умолчанию Stretch на что-то вроде Left.Это позволит ему использовать желаемый размер, который будет размером заполнителя плюс размер границы, вместо того, чтобы принудительно растягиваться до ширины DockPanel.

<DockPanel LastChildFill="True">
    <Label DockPanel.Dock="Bottom" Foreground="Red" Content="{Binding ErrorContent}" Margin="0,5,0,0" Background="LightGray" />
    <Border BorderBrush="Red" BorderThickness="2" HorizontalAlignment="Left">
        <AdornedElementPlaceholder/>
    </Border>
</DockPanel>
...