Autor Beitrag
ebber
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Mi 09.11.11 19:05 
Hallo,

ich habe versucht eine Animation an die ListBox ItemContainer IsSelected Eigenschaft zu hängen:

ausblenden volle Höhe 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:

ausblenden Quelltext
1:
Von der [Unknown]-Eigenschaft wird nicht auf "DependencyObject" im Pfad "(0).(1)[0].(2)" verwiesen.					


Sagt mir irgendwie garnix?

MfG
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Do 10.11.11 17:16 
Hat jemand viellicht ein Anhaltspunkt, was mir der Fehler sagen möchte?
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Mo 14.11.11 18:46 
Hallo,

Was ich, wie schon erwähnt, im anderen Forum erfahren habe:

ausblenden 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/>
                                            <!--SkewTransform/>
                                            <RotateTransform/>
                                            <TranslateTransform/-->

                                        </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 user profile iconChristian S.: C#- durch XML-Tags ersetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Mo 14.11.11 22:28 
Im Output steht nichts von einem Fehler.

MfG
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Mo 14.11.11 22:42 
Ich habe nochmal was ausprobiert. Ich habe die property der storyboard geändert zu height:

ausblenden 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
<ScaleTransform ScaleY="1" x:Name="trans"/>
...
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="ScaleY" Storyboard.TargetName="trans">
...
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Di 15.11.11 08:08 
Hallo Ebber,
das funktioniert bei mir ohne Probleme:
ausblenden 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>

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Di 15.11.11 20:23 
Danke fürs probieren, genau das habe ich nämlich auch fegestellt:

user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:

Das funktioniert ohne Probleme. Nur das scale geht nicht


Mit der height geht das, aber nicht mit dem scale!?