IDataErrorInfo Красные границы и элемент управления TabItem - PullRequest
1 голос
/ 29 июля 2011

У меня есть пользовательский элемент управления, связанный с моделью представления, и я использую IDataErrorInfo для проверок с указанием красной границы по умолчанию в случае ошибок проверки.

Вот один из моих элементов управления:

<TextBox Text="{Binding Path=Code, ValidatesOnDataErrors=True}"></TextBox>

Все работает нормально, и во время инициализации все элементы управления с ошибками проверки имеют видимую красную рамку. Все, кроме элементов управления, которые находятся внутри элемента управления TabItem, который не отображается (не выбран) во время инициализации. Эти элементы управления не отображают красную рамку, хотя проверка также работает для них.

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

У меня вопрос: могу ли я что-то пропустить, а если нет, то как вручную запустить принудительную проверку всех моих элементов управления в пользовательском элементе управления, чтобы отображать красные границы хотя бы во время TabControl.SelectionChanged?

Заранее спасибо.

1 Ответ

2 голосов
/ 29 июля 2011

Я нашел обходной путь

Я создал стиль, где всякий раз, когда для IsVisible свойства элемента управления установлено значение true, я применяю свой собственный Validation.ErrorTemplate:

<Style TargetType="{x:Type TextBox}">
            <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"></Setter>
                        <Style.Triggers>
                                    <Trigger Property="IsVisible" Value="True">
                    <Setter Property="Validation.ErrorTemplate">
                        <Setter.Value>
                            <ControlTemplate>
                                <Border BorderBrush="Red" BorderThickness="1" >
                                    <AdornedElementPlaceholder/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...