0

Ich ziehe meine Haare aus, um dies zur Arbeit zu bekommen. Ich versuche zu lernen, Übergänge zu machen und ein bisschen zu kämpfen. Grundsätzlich mache ich eine Combo-Box, bestehend aus einem Raster mit 2 Zeilen. obere Reihe ist eine Schaltfläche, wenn geklickt wird, öffnet sich die untere Zeile mit einer scrollviewer dynamisch hinzugefügten Schaltflächen. Wenn Sie darauf klicken, wird die untere Gitterreihe minimiert.So ändern Sie den visuellen Zustand von Scroll-Viewer in wpf xaml

Das Problem ist, dass das Click-Ereignis nicht aus dem Scroll-Viewer ausgelöst wird, oder es den visuellen Zustand im Bereich oder etwas nicht finden kann. So funktioniert die SelectionMode funktioniert gut, wenn Button11 geklickt wird, aber nichts passiert, wenn ich auf eine Schaltfläche Artikel klicke. Die Tasten sind die scrollviewer arbeiten perfekt mit ihren eigenen Farbanimationen und Feuerungsereignisse etc

Id zu einer Lösung in Code-behind offen sein, da ich gerouteten Click-Ereignis Feuer kein Problem machen kann, aber ich hatte mit

kein Glück gehabt

Idealerweise möchte ich, dass dies ein benutzerdefiniertes Benutzersteuerelement ist, das ich hinzufügen kann, wie local:CustomComboBox, aber es kompliziert für mich in diesem Stadium mit Steuerelementen in Steuerelementen in einem benutzerdefinierten Steuerelement.

MyButton1 ist nur eine einfache Taste aber mit Farbverläufen usw.

Keine Ausnahmen/Fehler nur passiert nichts, wenn ich auf die Schaltfläche klicken

<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; 
    } 

Antwort

0

GELÖST !!!

zog ich die Visual auf das Wurzelelement - Grid1, aber weiß nicht, ob es das

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