2010-09-28 6 views
2

J'essaie de modifier la visibilité d'un contrôle dans un modèle ListBoxItem (basé sur ce qu'il est sélectionné dans la liste parent) via un ChangePropertyAction mais le code ci-dessous ne fonctionne pas. J'ai essayé de bidouiller en réglant le TargetName sur le déclencheur ou en définissant la visibilité par défaut du contrôle à travers un style. J'ai débogué la liaison à travers un DebugConvert et vérifié que le IsSelected est correctement défini sur true, mais cela ne fonctionne toujours pas. Quelqu'un peut-il m'expliquer pourquoi cela ne fonctionne pas et comment je peux résoudre ce problème?ChangePropertyAction pour modifier Visibilité ne fonctionne pas dans ListBoxItem DataTemplate

<ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition/> 
            <ColumnDefinition/> 
            <ColumnDefinition/> 
           </Grid.ColumnDefinitions> 
           <TextBlock Text="{Binding PersonalData.LastName}" FontSize="20" FontWeight="Bold" Grid.Column="0"/> 
           <TextBlock FontSize="20" Text="{Binding PersonalData.FirstName}" Grid.Column="1" /> 
           <StackPanel x:Name="buttonStackPanel" Orientation="Horizontal" Grid.Column="2" Visibility="Collapsed"> 
            <Interactivity:Interaction.Triggers> 
             <ei:DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}, Mode=FindAncestor}, Path=IsSelected, Converter={StaticResource DebugConverter}}"> 
              <ei:ChangePropertyAction PropertyName="Visibility"> 
               <ei:ChangePropertyAction.Value> 
                <Visibility>Visible</Visibility> 
               </ei:ChangePropertyAction.Value> 
              </ei:ChangePropertyAction> 
             </ei:DataTrigger> 
            </Interactivity:Interaction.Triggers> 
            <Button Content="Do Something"></Button> 
           </StackPanel> 
          </Grid> 
[...] 

Répondre

0

Sauf si vous utilisez un conteneur d'éléments listbox personnalisé, vous pouvez simplement lier la propriété de visibilité du StackPanel à la propriété du conteneur ListBoxItem IsSelected en utilisant un liant RelativeSource en mode FindAncestor.

Questions connexes