2013-09-10 1 views
0

J'ai un ListBox qui utilise mon ItemTemplate personnalisé. Je souhaite définir la propriété Visibility dans mon TextBlock (dans mon modèle) en fonction de l'élément sélectionné. Je pense à le faire en utilisant des déclencheurs. Mais comment puis-je savoir à l'intérieur de mon modèle si l'élément actuel est sélectionné ou non?Comment puis-je savoir si l'élément est sélectionné dans ItemTemplate?

<DataTemplate x:Key="myTemplate"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Tag="{Binding priority}" Loaded="SetIconPriority"/> 
     <Image Tag="{Binding alarm}" Loaded="SetIconAlarm"/> 
     <!-- I want this TextBlock to be visible only when item is selected --> 
     <TextBlock Text="{Binding description}"/> 
    </StackPanel> 
</DataTemplate> 

modifier: Il fonctionne, merci! Code:

  <TextBlock Grid.Column="2" Grid.Row="1" Text="{Binding opis}"> 
       <TextBlock.Style> 
        <Style TargetType="TextBlock"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="False"> 
           <Setter Property="Visibility" Value="Collapsed"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 

Répondre

2

L'utilisation d'un RelativeSource de liaison avec AncestorType étant ListBoxItem.

<DataTrigger Binding="{Binding IsSelected, 
           RelativeSource={RelativeSource AncestorType=ListBoxItem}}" 
      Value="True"> 

(peut vouloir inverser la logique et Collapse sur place False, évite la valeur par défaut Setter)

Questions connexes