2017-10-02 2 views
1

J'ai réussi à faire fonctionner TreeView dans une application WPF. J'utilise HierarchialDataTemplates pour afficher les données. Mes données sont une liste de Véhicules, où chaque Véhicule a une propriété Territoire.Comment modifier la visibilité d'un TextBlock en fonction de la valeur d'une propriété

Parfois, la propriété Territory est Null. Cela se produit lorsque le véhicule n'a pas été affecté à une région géographique.

La représentation visuelle que je voudrais dans le TreeView devrait être quelque chose comme ceci:

Vehicle_Name (Territory_Name)

Quand Vehicle.Territory est nul, je voudrais que le bold texte à supprimer. S'il reste, il y a cette parenthèse vide à la fin du nom du véhicule.

J'ai essayé d'utiliser un DataTrigger, mais le texte en gras reste, même pour des valeurs Territoire nulles.

<HierarchicalDataTemplate DataType="{x:Type self:TreeVehicleItem}" ItemsSource="{Binding ClientLocations}"> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Text="{Binding Name}" /> 
     <TextBlock FontWeight="Bold" Padding="10 0 0 0"> 
      <TextBlock.Style> 
       <Style TargetType="TextBlock"> 
        <Setter Property="Visibility" Value="Visible" /> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding Territory}" Value="x:Null"> 
          <Setter Property="Visibility" Value="Collapsed" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </TextBlock.Style> 
     (<Run Text="{Binding Territory.Name}" />) 
     </TextBlock> 
    </StackPanel> 
</HierarchicalDataTemplate> 

J'ai vérifié que la propriété Territory est en effet Null et non pas seulement une liste vide.

Que dois-je faire pour que le TextBlock en gras disparaisse lorsque la propriété Territory est Null?

Répondre

3

C'est la chaîne "x:Null"

Value="x:Null" 

C'est le markup extension NullExtension, qui renvoie une null réelle. Voici ce que tu veux.

Value="{x:Null}" 
+1

* coup de tête * Merci beaucoup Ed! –