0

我只是想知道是否有一种方法可以设置您希望故事板项目出现在屏幕上的垂直阈值(滑入和滑出时),这样它就不必在屏幕上的所有内容上滑动它进进出出。我有一个根据计时器事件翻转的项目列表,但是当一个项目出现在屏幕上时,它会越过所有其他按钮和用户控件,看起来不太漂亮。如果我可以让它看起来好像项目从背景滑出就位,那就太好了。

我有两个故事板动画,一个处理滑入的对象,另一个处理需要滑出的当前对象。内容区域的两侧还有箭头按钮,当前对象在箭头上滑动,这是我想要消除的。这是故事板代码:

    <Storyboard x:Key="newsIn" x:Name="newsIn">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="newsContent">
            <EasingDoubleKeyFrame KeyTime="0" Value="500"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0">
                <EasingDoubleKeyFrame.EasingFunction>
                    <BounceEase EasingMode="EaseIn" Bounces="0"/>
                </EasingDoubleKeyFrame.EasingFunction>
            </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

    <Storyboard x:Key="newsOut" x:Name="newsOut">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="newsContent">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-500">
                <EasingDoubleKeyFrame.EasingFunction>
                    <BounceEase EasingMode="EaseIn" Bounces="0"/>
                </EasingDoubleKeyFrame.EasingFunction>
            </EasingDoubleKeyFrame>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

我不知道我是否非常清楚地描述了这一点,但如果有人以前这样做过或者知道我可以学习这样做的资源,非常感谢你的帮助。

谢谢你的时间。

回答:将您的动画元素放在画布(或某个容器)中,并使用 Clip 属性仅在它们出现在专用区域内时才显示它们。

    <Canvas Name="newsContent" Grid.Column="1" >
       <Canvas.Clip>
           <RectangleGeometry Rect="0,0,372,200"/>
       </Canvas.Clip>
       <Ui element/>
       <Ui element2/>
       ....
    </Canvas>
4

2 回答 2

1

好的,您可以尝试在作为您的内容容器的控件上使用 clipToBounds = true,即包含“新闻”项目(即画布或网格等)的控件。确保您的箭头等不在同一个容器中

于 2012-06-21T01:01:25.693 回答
0

您也许可以为 opacity 属性设置动画?使它只有在它就位后才变得可见

于 2012-06-19T00:01:43.697 回答