WPF: Validation.ErrorTemplate не скрывается, когда скрытый элемент управления (TextBox) скрыт - PullRequest
1 голос
/ 07 октября 2010

У меня есть TextBox, который скрывается в зависимости от того, выбран ли элемент в ComboBox.

Эта часть работает нормально.

Однако, она также имеет установленный ValidatesOnDataErrors, и если TextBox содержит ошибку, то когда TextBox скрыт, остается ErrorTemplate (в слое Adorner).

Мне кажется, я понимаю, что поскольку ErrorTemplate устанавливается в глобальный слой Adorner, он не осознает, что TextBlock, к которому он не имеет логической связи, скрыт.

Любоймысли о том, как работать с или вокруг этого?Я пытался добавить явный AdornerDecorator внутри Grid, который привязан к значению ComboBox.

1 Ответ

8 голосов
/ 01 февраля 2011

Вы, очевидно, можете связать видимость AdornerElementPlaceholder с видимостью самого рекламодателя.Вот мой код:

<ControlTemplate x:Key="EmptyErrorTemplate">
    <Border Background="Transparent" BorderBrush="Transparent" BorderThickness="0" IsHitTestVisible="false"
            Visibility="{Binding ElementName=placeholder, Path=AdornedElement.Visibility}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Margin="0,0,-30,0" Text="!" 
                       Foreground="Red"
                       FontSize="34"
                       VerticalAlignment="Center"/> 
            <AdornedElementPlaceholder Name="placeholder" />
        </StackPanel>
    </Border>
</ControlTemplate>
...