2017-10-18 3 views
0

J'ai joué avec cela pendant un moment et je n'arrive pas à le faire fonctionner. Fondamentalement, j'ai une liste avec une image et une étiquette. Ce que je voudrais est de changer la couleur de la bordure de l'image si cet élément est sélectionné (la zone de liste est définie à la sélection multiple)Définir la bordure de l'image lorsque l'élément est sélectionné dans une zone de liste

C'est que j'ai jusqu'à présent ...

  <DataTemplate x:Key="ListBox_DataTemplate"> 
        <Grid HorizontalAlignment="Center"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="220"/> 
      </Grid.RowDefinitions> 

      <Border x:Name="thumbBorder" BorderThickness="8" 
       CornerRadius="8"> 
       <Border.Style> 
        <Style TargetType="Border"> 


          <Style.Triggers> 
           <DataTrigger Binding="{Binding isSelected, 
            ElementName=lb_images}" Value="True"> 
           <Setter Property="BorderBrush 
               Value="SteelBlue"/> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding isSelected, 
            ElementName=lb_images}" Value="False"> 
           <Setter Property="BorderBrush" 
               Value="Yellow"/> 
          </DataTrigger> 

         </Style.Triggers> 

         </Style> 

        </Border.Style> 

       <Image Width="170" Height="190" Source="{Binding Thumbnail}" 
HorizontalAlignment="Center" 
              VerticalAlignment="Top" 
x:Name="thumb"/> 
      </Border> 

Cependant, rien ne se passe quand je sélectionne l'article. Je suis vraiment bloqué, donc toutes les idées seraient les bienvenues.

Merci

Répondre

0

Votre DataTrigger doit utiliser un RelativeSource de liaison à l'élément conteneur ListBoxItem et utiliser le chemin de la propriété correcte IsSelected:

<DataTemplate x:Key="ListBox_DataTemplate"> 
    <Border BorderThickness="8"> 
     <Border.Style> 
      <Style TargetType="Border"> 
       <Setter Property="BorderBrush" Value="Yellow"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsSelected, 
           RelativeSource={RelativeSource AncestorType=ListBoxItem}}" 
           Value="True"> 
         <Setter Property="BorderBrush" Value="SteelBlue"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Border.Style> 
     <Image Source="{Binding Thumbnail}"/> 
    </Border> 
</DataTemplate> 
+0

C'est génial! Cela fonctionne très bien! Merci pour votre aide. – user3212543