Laden...

DataGrid RowHeader Animation Xaml

Letzter Beitrag vor 2 Jahren 6 Posts 713 Views
DataGrid RowHeader Animation Xaml

Hallo zusammen,

Ich habe in meinem Projekt einen DataGrid. In diesem habe ich 3 Ebenen über eine ObservableCollection. In den Rowdetails zeige ich jeweils die untergeordnete DatGrid an, die Daten zum übergeordneten Datensatz zeigt. Nun hätte ich gern in den Rowheadern einen Animierten Pfeil, der sich dreht, wenn die Rowdetails aufgerufen werden. Nur ich schaffe es nicht das Storyboard richtig zu implementieren. Ich hab jetzt schon etliche Google Ergebnisse durch, aber ich finde nichts, das mich weiter bringt. Ich möchte das ohne Code behind lösen.

Und was ist Deine Frage? Was hast Du bisher versucht? Code zeigen?
Bitte nicht erwarten, dass das Forum für Dich den Quellcode generiert.
[Hinweis] Wie poste ich richtig?

Entschuldigung

Ich habe bereits versucht das Storyboard über einen Datatrigger im DataGrid.RowHeaderStyle (1) aufzurufen ,über ein DataGrid.RowHeaderTemplate(2). Beides schlug fehl mit einem Vermerk, dass ein TargetName nicht erlaubt ist in einem Style.. Des weiteren habe ich versucht einen Button einzusetzen und dort über Find Ancestor den Button bei einem Rowselect zu drehen, allerdings habe ich diesen Code komplett entsorgt..

Code zu 1


 <DataGrid.RowHeaderStyle >

                                        <Style TargetType="DataGridRowHeader">
                                            <Setter Property="Background" Value="#302E2F"/>
                                            <Setter Property="BorderBrush" Value="#E04D0D"/>
                                            <Setter Property="BorderThickness" Value="1"/>
                                            <Setter Property="Visibility" Value="Visible"/>
                                            <Setter Property="Width" Value="25"/>
                                            <Style.Triggers>
                                                <Trigger Property="IsRowSelected" Value="True"  >
                                                    <Setter Property="Content">
                                                        <Setter.Value>
                                                            <DockPanel Width="20" Height="20" >

                                                                <svgc:SvgViewbox
                                                                    HorizontalAlignment="Center" VerticalAlignment="Top"
                                                                    Margin="4"  
                                                                    Source="/Assets/Icons/down-arrow.svg"
                                                                    DockPanel.Dock="Top"
                                                                    RenderTransformOrigin="0.5,0.5">
                                                                    
                                                                    <svgc:SvgViewbox.RenderTransform>
                                                                        <RotateTransform x:Name="AnimatedRotateTransform" Angle="0" />
                                                                    </svgc:SvgViewbox.RenderTransform>
                                                                
                                                                </svgc:SvgViewbox>
                                                            
                                                            </DockPanel>
                                                        </Setter.Value>
                                                    </Setter>
                                                    <Setter Property="VerticalContentAlignment" Value="Top"/>
                                                    <Setter Property="BorderThickness" Value="2"/>
                                                    
                                                </Trigger>

                                                <EventTrigger RoutedEvent="DataGridRow.Selected">
                                                    
                                                        <BeginStoryboard>
                                                            <Storyboard>
                                                                <DoubleAnimation 
                                                                    Storyboard.TargetName="AnimatedRotateTransform"
                                                                    Storyboard.TargetProperty="Angle" 
                                                                    To="360" Duration="0:0:1" FillBehavior="Stop" />
                                                            </Storyboard>
                                                        </BeginStoryboard>
                                                   
                                                </EventTrigger>
                                                
                                            </Style.Triggers>
                                        </Style>
                                    </DataGrid.RowHeaderStyle>

Code zu 2


 <DataGrid.RowHeaderTemplate>
                                        <DataTemplate>
                                            <DockPanel Width="20" Height="20" >

                                                <svgc:SvgViewbox
                                                                    HorizontalAlignment="Center" VerticalAlignment="Top"
                                                                    Margin="4"  
                                                                    Source="/Assets/Icons/down-arrow.svg"
                                                                    DockPanel.Dock="Top"
                                                                    RenderTransformOrigin="0.5,0.5"
                                                                    x:Name="ArrowView">

                                                    <svgc:SvgViewbox.RenderTransform>
                                                        <RotateTransform Angle="0" />
                                                    </svgc:SvgViewbox.RenderTransform>

                                                    <svgc:SvgViewbox.Style>
                                                        <Style>
                                                            <Style.Triggers>
                                                                <EventTrigger RoutedEvent="DataGridRow.Selected">

                                                                    <BeginStoryboard>
                                                                        <Storyboard>
                                                                            <DoubleAnimation 
                                                                                Storyboard.TargetName="AnimatedRotateTransform"
                                                                                Storyboard.TargetProperty="Angle" 
                                                                                To="360" Duration="0:0:1" FillBehavior="Stop" />
                                                                        </Storyboard>
                                                                    </BeginStoryboard>

                                                                </EventTrigger>
                                                            </Style.Triggers>
                                                        </Style>
                                                       
                                                    </svgc:SvgViewbox.Style>
                                                    
                                                </svgc:SvgViewbox>

                                               
                                            </DockPanel>
                                        </DataTemplate>
                                    </DataGrid.RowHeaderTemplate>

und dir Frage ist natürlich -> Wie muss ich`s anstellen, dass es klappt...

Hier noch die Fehlermeldung:

Nein, das führt leider zu keiner Lösung.