Ориентация раскадровки GridLength для WP8

Я хочу сделать раскадровку для RowDefinition, изменяя высоту, и я нашел это, чтобы помочь мне. Единственная проблема, когда я хочу создать класс GridLengthAnimation, я не могу сделать его AnimationTimeline. Это потому, что Windows Phone 8 не поддерживает это?

В этом случае есть ли другой способ создания раскадровки для RowDefinition?

1 ответ

Самый простой способ может заключаться в том, что вы помещаете сетки в строки и анимируете их свойство Height следующим образом.

Вот XAML:

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <Grid Background="AliceBlue"
          Grid.Row="0"
          Height="100"
          Tap="Grid_Tap"
          CacheMode="BitmapCache" />
    <Grid Background="AntiqueWhite"
          Grid.Row="1"
          Height="100"
          Tap="Grid_Tap"
          CacheMode="BitmapCache" />
    <Grid Background="Aqua"
          Grid.Row="2"
          Height="100"
          Tap="Grid_Tap"
          CacheMode="BitmapCache" />
    <Grid Background="Aquamarine"
          Grid.Row="3"
          Height="100"
          Tap="Grid_Tap"
          CacheMode="BitmapCache" />

</Grid>

И CS:

private void AnimateHeight(Grid grid)
{
    double newHeight = grid.ActualHeight == 100 ? 300 : 100; //select the height we want to animate

    Storyboard story = new Storyboard();
    DoubleAnimation animation = new DoubleAnimation();
    animation.To = newHeight;
    animation.Duration = TimeSpan.FromSeconds(0.5);

    Storyboard.SetTarget(animation, grid);
    Storyboard.SetTargetProperty(animation, new PropertyPath(Grid.HeightProperty));

    story.Children.Add(animation);
    story.Begin();
}

private void Grid_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Grid grid = sender as Grid; //select the grid we tapped
    AnimateHeight(grid);
}

Обратите внимание, что я поместил cachemode в bitmapcache всех сеток. Это не обязательно, но дает более плавную анимацию, потому что статические сетки не будут перерисовываться снова в каждом кадре.

Другие вопросы по тегам