如何以编程方式将对象从右向左滑动到网格中

时间:2014-03-30 06:10:18

标签: c# silverlight xaml animation

使用SilverlightXAMLC#,我如何以编程方式将Object/UserControl从右向左滑动到我的视野中。

我遇到的问题是VideoPlayer从一开始就在屏幕上。我将起始网格点设置为网格列9,但即使我只有8个网格列,它仍会显示。

我正在使用具有 8 x 8 相等网格布局的网格,如此;

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
            <ColumnDefinition Width="*" ></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition x:Name="Row0" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row1" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row2" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row3" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row4" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row5" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row6" Height="*"></RowDefinition>
            <RowDefinition x:Name="Row7" Height="*"></RowDefinition>
        </Grid.RowDefinitions>

我已将VideoPlayer设置为从Grid.Col 9开始,但仍显示Col 8

播放器的当前XAML是

        <Controls:VideoPlayer x:Name="videoPlayer"
            Grid.Row="1" 
            Grid.RowSpan="6"
            Grid.Column="9" <-- I wanted it off the grid but it still shows on col 8
            Grid.ColumnSpan="3" Margin="15"                    
               />

我目前有

 <Storyboard x:Name="slideInVideo">
               <DoubleAnimation Storyboard.TargetName="videoPlayer"
                      Storyboard.TargetProperty="Grid.Column"
                        From="8" To="5" Duration="00:00:10"/>

        </Storyboard>

2 个答案:

答案 0 :(得分:1)

您的方法存在许多问题。

  • 首先,如果您没有9列,则无法在9列中设置元素。
  • 请注意Grid.RowGrid.Column属性指向基于零的索引。
  • 最后但并非最不重要;目标应为Storyboard.TargetProperty="(Grid.Column)"注意括号,它是动画附加属性所必需的。

答案 1 :(得分:0)

您可以使用表达式交互性和交互命名空间中可用的内置行为

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:ee="http://schemas.microsoft.com/expression/2010/effects"

此处有更多信息...... http://msdn.microsoft.com/en-us/library/ff724013(v=expression.40).aspx

FluidMoveBehaviorExtendedVisualStateManager.TransitionEffect之类的内容可以帮助您在加载时(或在其他状态更改时)显示从屏幕一侧移入的元素的外观。