0

Je tire mes cheveux en essayant d'obtenir que cela fonctionne. Im essayant d'apprendre à faire des transitions et luttant un peu. Fondamentalement, je fais une boîte combo, composée d'une grille contenant 2 lignes. rangée supérieure est un bouton, lorsque vous cliquez sur la ligne du bas ouvre montrant un scrollviewer des boutons ajoutés dynamiquement. Lorsque vous cliquez dessus, la ligne de la grille inférieure s'effondre.Comment changer d'état visuel du spectateur défilement dans WPF XAML

Le problème est que l'événement Click ne semble pas tirer à partir du visualiseur de défilement, ou il ne peut pas trouver l'état visuel dans le champ d'application ou de quelque chose. Donc, le SelectionMode fonctionne très bien quand on clique sur Button11, mais rien ne se passe lorsque je clique sur un bouton d'élément. Les boutons est le scrollviewer fonctionnent parfaitement avec leurs propres animations de couleurs et des événements de tir etc

Id être ouvert à une solution dans le code-behind que je peux faire du feu d'événement click routé pas de problème, mais je n'avais pas eu de chance avec

VisualStateManager.GoToState(gridContent, "HiddenMode", true); 

Idéalement, je voudrais que ce soit un contrôle utilisateur personnalisé, je peux ajouter comme local:CustomComboBox mais il a compliqué pour moi à ce stade ayant des contrôles à l'intérieur des contrôles dans un contrôle personnalisé.

MyButton1 est juste un simple bouton, mais avec des transitions de couleurs etc

Aucune exception/erreurs que rien ne se passe lorsque je clique sur le bouton

<Window.Resources> 

    <Storyboard x:Key="sb1"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="gridContent" Storyboard.TargetProperty="Height"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="30" /> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="160" /> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="scrItems" Storyboard.TargetProperty="Height"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="130" /> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
    <Storyboard x:Key="sb2"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="gridContent" Storyboard.TargetProperty="Height"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="160" /> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="30" /> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetName="scrItems" Storyboard.TargetProperty="Height"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="130" /> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0" /> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</Window.Resources> 


<Grid Name="Grid1" Margin="0,22,0,0" RenderTransformOrigin="0.5,0.5"> 
     <Grid Name="gridContent" HorizontalAlignment="Left" Margin="187,74,0,0" VerticalAlignment="Top" Width="140" Height="30" RenderTransformOrigin="0.5,0.5"> 
     <VisualStateManager.VisualStateGroups> 
      <VisualStateGroup x:Name="VisualStateGroup"> 
       <VisualState x:Name="SelectionMode" Storyboard="{StaticResource sb1}" /> 
       <VisualState x:Name="HiddenMode" Storyboard="{StaticResource sb2}" /> 
      </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 

     <Grid.RowDefinitions> 
       <RowDefinition Height="30"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 


     <local1:Button1 Name="Button11" Content="Click" Height="30" Grid.Row="0" Margin="0,0,0,30"> 
       <i:Interaction.Triggers> 
        <i:EventTrigger EventName="Click"> 
         <ei:GoToStateAction TargetName="gridContent" StateName="SelectionMode" /> 
        </i:EventTrigger> 
       </i:Interaction.Triggers> 
      </local1:Button1> 
     <ScrollViewer Name="scrItems" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden" Margin="0" Width="140" Height="0" Grid.Row="1"> 

      <ItemsControl x:Name="stkItems"> 

        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel Orientation="Vertical"/> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 

         <local1:Button1 Content="Click" Height="30"> 
          <i:Interaction.Triggers> 
           <i:EventTrigger EventName="Click"> 

            <ei:GoToStateAction TargetName="gridContent" StateName="HiddenMode" /> 
           </i:EventTrigger> 
          </i:Interaction.Triggers> 
         </local1:Button1> 
        </DataTemplate> 

        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </ScrollViewer> 
     </Grid> 
</Grid> 




private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     lstItems = new ObservableCollection<MyButton.Button1>(); 
     for (int i = 0; i <= 999; i++) 
     { 
      MyButton.Button1 item1 = new Button1(); 
      item1.Content = "Item " + i; 
      item1.Width = stkItems.Width; 
      item1.Height = 30; 
      //item1.Click += new RoutedEventHandler(Button_Item_Click); 
      lstItems.Add(item1); 
     } 
     stkItems.DataContext = this.stkItems; 
     stkItems.ItemsSource = lstItems; 
    } 

Répondre

0

!!! SOLVED

je me suis déplacé le VisualStateManager à l'élément racine - Grid1, mais ne sais pas si cela l'affecte

private void Button_Item_Click(object sender, RoutedEventArgs e) 
    { 
     bool g = ExtendedVisualStateManager.GoToElementState(this.Grid1 as FrameworkElement, "HiddenMode", true); 
    }