2017-09-08 3 views
0

Je tente de réduire les expanseurs étendus lorsqu'un bouton à bascule n'est pas coché. L'utilisation de DataTriggers ne fonctionne pas. Comment puis-je atteindre cet objectif? Et pourquoi le DataTrigger ne fonctionne pas?Réduction des expanseurs internes lorsque l'extenseur externe s'est effondré

Voici le code.

<Window x:Class="WpfApp4.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApp4" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <StackPanel> 
      <ToggleButton Name="TheToggle">Collapse expanders when unchecked</ToggleButton> 
        <Expander Header="Menu 1"> 
         <Expander.Style> 
          <Style TargetType="Expander"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding ElementName=TheToggle,Path=IsChecked}" Value="False"> 
             <Setter Property="IsExpanded" Value="False"/> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </Expander.Style> 
         <StackPanel> 
          <Button>Menu Item 1</Button> 
          <Button>Menu Item 2</Button> 
          <Button>Menu Item 3</Button> 
          <Button>Menu Item 4</Button> 
         </StackPanel> 
        </Expander> 
        <Expander Header="Menu 2"> 
         <StackPanel> 
          <Button>Menu Item 1</Button> 
          <Button>Menu Item 2</Button> 
          <Button>Menu Item 3</Button> 
          <Button>Menu Item 4</Button> 
         </StackPanel> 
        </Expander> 
      <Expander Header="Menu 3"> 
       <StackPanel> 
        <Button>Menu Item 1</Button> 
        <Button>Menu Item 2</Button> 
        <Button>Menu Item 3</Button> 
        <Button>Menu Item 4</Button> 
       </StackPanel> 
      </Expander> 
     </StackPanel> 
    </Grid> 
</Window> 

Répondre

1

J'ai modifié votre exemple pour réduire/développer tout Expander sur ButtonClick:

<Grid> 
     <StackPanel> 
      <ToggleButton Name="TheToggle" Content="Collapse expanders when unchecked"> 

      </ToggleButton> 
      <Expander Header="Menu 1" IsExpanded="{Binding IsChecked, ElementName=TheToggle, Mode=TwoWay}"> 
       <StackPanel> 
        <Button>Menu Item 1</Button> 
        <Button>Menu Item 2</Button> 
        <Button>Menu Item 3</Button> 
        <Button>Menu Item 4</Button> 
       </StackPanel> 
      </Expander> 
      <Expander Header="Menu 2" IsExpanded="{Binding IsChecked, ElementName=TheToggle, Mode=TwoWay}"> 
       <StackPanel> 
        <Button>Menu Item 1</Button> 
        <Button>Menu Item 2</Button> 
        <Button>Menu Item 3</Button> 
        <Button>Menu Item 4</Button> 
       </StackPanel> 
      </Expander> 
      <Expander Header="Menu 3" IsExpanded="{Binding IsChecked, ElementName=TheToggle, Mode=TwoWay}"> 
       <StackPanel> 
        <Button>Menu Item 1</Button> 
        <Button>Menu Item 2</Button> 
        <Button>Menu Item 3</Button> 
        <Button>Menu Item 4</Button> 
       </StackPanel> 
      </Expander> 
     </StackPanel> 
    </Grid> 

Est-ce le comportement désiré?