Frage

Ich habe eine Listview, das wie so sehr einfach in meiner XAML definiert ist

<ListView Name="myListVew" MaxHeight="200" Visibility="Collapsed">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Line" Width="Auto" DisplayMemberBinding="{Binding Line}" />
            <GridViewColumn Header="Error" Width="Auto" DisplayMemberBinding="{Binding Error}" />
        </GridView>
    </ListView.View>
</ListView>

Wenn ich möchte, dass die Listview erscheinen, ich die Höhe der Listenansicht von 0. Das Problem ist, die animiert werden soll, weiß ich nicht, die endgültige Höhe des Listview, da wird es davon abhängen, wie viele Elemente innerhalb gezeigt es. Gibt es trotzdem, dies zu tun?

War es hilfreich?

Lösung

Sie nicht hasse es, wenn man stundenlang nach einer Lösung suchen, auch eine Frage in ein Forum und dann die Antwort selbst 10 Minuten später finden?

Wie auch immer, ich habe es funktioniert, indem Sie ein Layout Skala Transformation wie so anwenden

<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ErrorDisplay" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
    <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
    <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>
</DoubleAnimationUsingKeyFrames>

Andere Tipps

Dies ist nicht genau das gleiche Szenario, aber es kann jemand anders helfen.

Ich hatte eine Grenze, die eine Höhe von Auto hatte und ich wollte es auf eine bestimmte Höhe animieren.

Meine Grenze sah wie folgt aus:

<Border Name="ContainerBorder">
  <!-- Stuff... -->
</Border>

Ich habe dieses Drehbuch:

<Storyboard x:Key="EditIn">
  <DoubleAnimation Storyboard.TargetProperty="Height"
                   Storyboard.TargetName="ContainerBorder"
                   Name="BorderAnimation"
                   To="45"
                   Duration="0:0:0.8" />
</Storyboard>

Die Taste, die die Animation hatte einige Code-Behind ausgelöst:

private void Edit_Click(object sender, RoutedEventArgs e) {
  Storyboard sb = (Storyboard)FindResource("EditIn");
  //Find the border animation
  DoubleAnimation da = (DoubleAnimation)sb.Children.Where(t => t.Name == "BorderAnimation").FirstOrDefault();
  if (da != null) { da.From = ContainerBorder.ActualHeight; }
  sb.Begin(this);
}

Also, ich fand einfach die Grenze und stellen Sie die „Von“ Eigenschaft der Animation der Framework der Actual.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top