XAML网格可见性转换?

XAML网格可见性转换?,xaml,grid,windows-store-apps,visibility,transitions,Xaml,Grid,Windows Store Apps,Visibility,Transitions,我有一个网格,其可见性绑定到viewmodel中的属性。这一切都很好——网格正确显示/消失。我的问题是,如何应用一个转换,使网格内容滑入UI边缘,而不是立即从屏幕上消失?当使其可见时,应再次滑出 <Grid Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Margin="30,30,0,30" Visibility="{Binding IsSearchEnabl

我有一个网格,其可见性绑定到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>


作为一个简单的例子,一种方法是:

<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>

这将在加载时将其滑入,甚至在加载过程中淡入。您可能需要在SlideIn上使用“X”值,才能根据自己的喜好将其从屏幕上删除。你可以把它反转到另一个方向


希望这能有所帮助。

你只需要启动一个故事板动画就可以完成这项任务,一般来说,人们会寻找努力,然后纠正这里缺少的内容,而不仅仅是提供代码,但如果我有时间,我会稍后给你举一个例子。好吧,这是可行的,但网格加载的事件只启动一次。既然没有办法处理网格元素(实际上有,但需要工作),那么还有其他方法可以实现同样的效果吗?@AliDemirci为了这个老例子,我刚刚在那个事件中使用了它。你可以随意开枪。你具体有什么问题?也许需要一个单独的问题?我有一个页面包含两个网格,分别是
LogIn
SignUp
。我可以随心所欲地在它们之间切换。默认情况下,注册网格会折叠,但grid.Loaded事件在加载页面时触发,而不是在可见性更改时触发。因此,它的动画不起作用。@AliDemirci,这样您就可以设置EventTrigger来观察可见性,并使用ControlStoryboard动作触发情节提要,或者您也可以通过使用情节提要的代码来执行。Begin方法。您只是在寻找复制/粘贴答案吗?无论哪种方式,我都会建议您创建一个与当前问题独特的新问题。:)好了,给你:@Chris W。