J'ai une configuration DataTrigger
comme ceci:Spécification du contexte de données en XAML arrête le déclenchement de données de travail
<UserControl.Resources>
<Style x:Key="resultTypeStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding Result, Path=Result.Type}" Value="Confirmation">
<Setter Property="Control.Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
Et deux contrôles qui l'utilisent:
<TextBlock Style="{StaticResource resultTypeStyle}" FontSize="14" Grid.Row="2">Condition</TextBlock>
<myns:ConditionBuilderView Style="{StaticResource resultTypeStyle}" DataContext="{Binding Condition}" Grid.Row="3"/>
Le type de résultat est modifié par une zone de liste déroulante.
Lorsque le type de résultat est la confirmation alors le TextBox
disparaît mais le ConditionBuilderView
reste visible à moins je supprimer l'attribut DataContext
de celui-ci.
Je dois définir l'attribut DataContext
afin que le contrôle obtienne les bonnes données. Qu'est-ce que la définition du contexte de données signifie que la propriété de visibilité ne fonctionne plus?
Est-ce que la Condition que vous liez le DataContext pour implémenter le résultat auquel vous liez le Trigger? Pour le demander autrement, le DataContext du TextBlock est-il le même que le DataContext du ConditionBuilderView? –
Je vois. Cela a du sens maintenant. Étant donné que j'ai défini le contexte de données dans ConditionBuilderView, le déclencheur examine ce contexte et non le contexte du contrôle parent dont hérite la zone de texte. –
Exactement. Bonne réponse, @MDDosu. –