XAML网格可见性转换?

时间:2014-04-02 16:43:48

标签: xaml grid windows-store-apps visibility transitions

我有一个Grid,它的Visibility绑定到我的viewmodel中的属性。这一切都很好 - 网格正确显示/消失。我的问题是,如何应用转换,以便网格内容不会立即从屏幕上消失,而是滑入UI的边缘?当可见时,它应该再次滑出。

 <Grid Grid.Row="0" Grid.RowSpan="2"
              Grid.Column="0"
              Margin="30,30,0,30"
              Visibility="{Binding IsSearchEnabled, Converter={StaticResource visibilityConverter}}">
            <Grid.RowDefinitions>
                <RowDefinition Height="60"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>

...

1 个答案:

答案 0 :(得分:9)

作为一个简单的例子,这样做的一种方式;

<Grid Grid.RowSpan="2" x:Name="TheGrid"
      Margin="30,30,0,30"
      Visibility="{Binding IsSearchEnabled, Converter={StaticResource visibilityConverter}}">
      <Grid.RowDefinitions>
           <RowDefinition Height="60"/>
           <RowDefinition Height="*"/>
      </Grid.RowDefinitions>
      <!-- Start the magic -->
      <Grid.RenderTransform>
           <TranslateTransform x:Name="SlideIn" X="750" />
      </Grid.RenderTransform>
      <Grid.Triggers>
           <EventTrigger RoutedEvent="Grid.Loaded">
                 <BeginStoryboard>
                       <Storyboard>
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="SlideIn" Storyboard.TargetProperty="X">
                                 <SplineDoubleKeyFrame KeyTime="0:0:1.25" Value="0" />
                            </DoubleAnimationUsingKeyFrames>
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="TheGrid" Storyboard.TargetProperty="Opacity">
                                  <SplineDoubleKeyFrame KeyTime="0:0:1.55" Value="1" />
                            </DoubleAnimationUsingKeyFrames>
                       </Storyboard>
                  </BeginStoryboard>
            </EventTrigger>
        </Grid.Triggers>
</Grid>

这会在它加载时将其滑入,甚至在它进入时淡入。您可能必须使用&#34; X&#34; SlideIn上的值可让您根据自己的喜好将其移出屏幕。你可以将其反转为另一个方向。

希望这有帮助。