DataTrigger для проверки элемента управления.HasError - PullRequest
0 голосов
/ 13 марта 2020

У меня есть пользовательский элемент управления, который использует интерфейс INotifyDataErrorInfo, и при возникновении ошибок он становится красным, внутри этого пользовательского элемента управления я поместил TextBlock, и следующий DataTrigger, похоже, не работает:

<TextBlock Text="{Binding DurationText}"
            Grid.Row="1">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=ActivityUserControl, Path=(Validation.HasError)}"
                             Value="True">
                    <Setter Property="Foreground"
                            Value="White">
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

Я удостоверился, что x: Name моего пользовательского элемента управления является правильным (ActivityUserControl), сам пользовательский элемент управления становится красным, когда у него есть ошибки, но DataTrigger TextBlock не работает (текст остается черным).

1 Ответ

2 голосов
/ 13 марта 2020

Вы должны установить Value из DataTrigger для начала:

<DataTrigger Binding="{Binding ElementName=ActivityUserControl, Path=(Validation.HasError)}"
             Value="True">
...

Вы также должны убедиться, что ActivityUserControl находится в той же области имен, что и TextBlock, и что фактически он содержит некоторые ошибки проверки.

Вы можете решить проблему с именной областью, связавшись с родителем UserControl, используя свойство RelativeSource:

Binding="{Binding Path=(Validation.HasError), 
    RelativeSource={RelativeSource AncestorType=UserControl}}"
...