[WPF] Afficher/Masquer un control en fonction de ses données

Publié le 22 avril 2009 par Jeremy.jeanson

Dans un scenario maitre/détail il peut s’avère plus propre de masquer le détail si aucun élément n’est sélectionné dans le mettre.

Voici donc un code permettant de masquer un détail (DockPanel) tant que le maitre(TreeView) n’a pas d’élément sélectionné :

<TreeView x:Name="treeViewItems">
...
</TreeView>

<DockPanel DataContext="{Binding ElementName=treeViewItems,Path=SelectedItem}">
 <DockPanel.Style>
  <Style TargetType="DockPanel">
   <Style.Triggers>
    <DataTrigger Binding="{Binding}" Value="{x:Null}">
     <Setter Property="Visibility" Value="Hidden"/>
    </DataTrigger>
   </Style.Triggers>
  </Style>
 </DockPanel.Style>
</DockPanel>

Toute l’astuce réside donc dans le DataTrigger qui test l’état de l’objet du Binding.