Entwickler-Ecke
WPF / Silverlight - WPF ListBox IsSelected Animation
ebber - Mi 09.11.11 19:05
Titel: WPF ListBox IsSelected Animation
Hallo,
ich habe versucht eine Animation an die ListBox ItemContainer IsSelected Eigenschaft zu hängen:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| <Style TargetType="{x:Type ListBoxItem}" x:Key="listBoxItemStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <Grid> <ContentPresenter /> <Rectangle x:Name="rectangle" Fill="Black" Opacity="0" Height="40"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="true"> <Trigger.EnterActions> <BeginStoryboard> <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="rectangle"> <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.6"> <EasingDoubleKeyFrame.EasingFunction> <BackEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> </DoubleAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </Trigger.EnterActions> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> |
Die Animation soll das Rechteck ein bisschen größer skalieren.
Wenn man dann wirklich auf ein Element der Listbox klickt, stürzt das Programm ab:
Quelltext
1:
| Von der [Unknown]-Eigenschaft wird nicht auf "DependencyObject" im Pfad "(0).(1)[0].(2)" verwiesen. |
Sagt mir irgendwie garnix?
MfG
ebber - Do 10.11.11 17:16
Hat jemand viellicht ein Anhaltspunkt, was mir der Fehler sagen möchte?
ebber - Mo 14.11.11 18:46
Hallo,
Was ich, wie schon erwähnt, im anderen Forum erfahren habe:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <Rectangle x:Name="rectangle" Fill="Black" Opacity="0" Height="40"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> |
Man muss die Eigenschaft wohl erst so erzeugen. Dann kommt der Fehler nicht mehr.
Allerdings bin ich mit dem eigentlich Problem noch nicht weiter. Es kommt jetzt zwar der Fehler nicht mehr, aber es passiert leider auch sonst nichts :(
Zum Crosspost: Ich habe die Frage nicht zweimal zur selben Zeit gestellt. Ich habe erst den anderen Post gemacht, als mir hier offensichtlich niemand weiterhelfen konnte.
Moderiert von
Christian S.: C#- durch XML-Tags ersetzt
Kha - Mo 14.11.11 21:02
Die Eigenschaft muss man nicht erstellen, aber mit einem Objekt befüllen sollte man sie natürlich schon. Werden denn irgendwelche Binding-Fehler im Output Window angezeigt?
ebber - Mo 14.11.11 22:28
Im Output steht nichts von einem Fehler.
MfG
ebber - Mo 14.11.11 22:42
Ich habe nochmal was ausprobiert. Ich habe die property der storyboard geändert zu height:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height" Storyboard.TargetName="rectangle"> <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="80"> <EasingDoubleKeyFrame.EasingFunction> <BackEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> </DoubleAnimationUsingKeyFrames> </Storyboard> |
Das funktioniert ohne Probleme. Nur das scale geht nicht
Ich habe auch probiert dem scale einen Namen zu geben und direkt darauf zuzugreifen, aber so passiert auch nichts:
C#-Quelltext
1: 2: 3: 4:
| <ScaleTransform ScaleY="1" x:Name="trans"/> ... <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="ScaleY" Storyboard.TargetName="trans"> ... |
Trashkid2000 - Di 15.11.11 08:08
Hallo Ebber,
das funktioniert bei mir ohne Probleme:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| <Style TargetType="{x:Type ListBoxItem}" x:Key="listBoxItemStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <Grid> <ContentPresenter /> <Rectangle x:Name="rectangle" Fill="Black" Opacity="0" Height="40"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="true"> <Trigger.EnterActions> <BeginStoryboard> <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height" Storyboard.TargetName="rectangle"> <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="80"> <EasingDoubleKeyFrame.EasingFunction> <BackEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> </DoubleAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </Trigger.EnterActions> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> |
XML-Daten
1: 2: 3: 4: 5:
| <ListBox> <ListBoxItem Content="Test1" Style="{StaticResource listBoxItemStyle}"/> <ListBoxItem Content="Test2" Style="{StaticResource listBoxItemStyle}"/> <ListBoxItem Content="Test3" Style="{StaticResource listBoxItemStyle}"/> </ListBox> |
Wenn ein Eintrag selektiert wird, so wird auch das Rechteck im Eintrag animiert größer gesetzt. Aber auch nicht mehr zurück, wenn es nicht mehr selektiert ist.
ebber - Di 15.11.11 20:23
Danke fürs probieren, genau das habe ich nämlich auch fegestellt:
ebber hat folgendes geschrieben : |
Das funktioniert ohne Probleme. Nur das scale geht nicht
|
Mit der height geht das, aber nicht mit dem scale!?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!