| Autor |
Beitrag |
ebber
      
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Mi 09.11.11 19:05
Hallo,
ich habe versucht eine Animation an die ListBox ItemContainer IsSelected Eigenschaft zu hängen:
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 
      
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Do 10.11.11 17:16
Hat jemand viellicht ein Anhaltspunkt, was mir der Fehler sagen möchte?
|
|
gfoidl
      
Beiträge: 157
Erhaltene Danke: 19
Win XP
C#, Fortran 95 - Visual Studio
|
Verfasst: Sa 12.11.11 15:42
Hallo,
siehe Crosspost und Antworten in WPF ListBox IsSelected Animation.
mfG Gü
_________________ Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
|
|
ebber 
      
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: 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
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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 
      
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Mo 14.11.11 22:28
Im Output steht nichts von einem Fehler.
MfG
|
|
ebber 
      
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: 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
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: 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 
      
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: 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!?
|
|