2

画面の右端から入ってくるウィンドウをアニメーション化したいと思います。

これは私のxamlです

<Window x:Class="SidebarTest.DockWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="DockWindow" Width="275"         
    ShowInTaskbar="False" 
    WindowStyle="None" ResizeMode="NoResize"
    AllowsTransparency="True" Background="Transparent" >

<Window.Triggers>
    <EventTrigger RoutedEvent="Window.Loaded">
        <BeginStoryboard>
            <Storyboard >
                <DoubleAnimation Duration="0:0:1.5" Storyboard.TargetProperty="Width" From="0" To="275" AccelerationRatio=".1"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>

<Grid Background="#2F2F2F">

</Grid>

ただし、幅は右から左ではなく、左から右にアニメーション化されます。このような:

ここに画像の説明を入力 ここに画像の説明を入力

これを変更して、端から来るようにするにはどうすればよいですか?

4

4 に答える 4

3

コードビハインドでは、

public DockWindow()
    {
        InitializeComponent();
        this.Left = this.Width + SystemParameters.FullPrimaryScreenWidth;
    }

トリガーを次のように変更します

<Window.Triggers>
    <EventTrigger RoutedEvent="Window.Loaded">
        <BeginStoryboard>
            <Storyboard >
                <DoubleAnimation Duration="0:0:1.5" Storyboard.TargetProperty="Left"  To="10" AccelerationRatio=".1"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>
于 2013-11-29T12:55:06.023 に答える
1

幅をスケーリングしようとする代わりに、幅を固定したままにしTranslateTransformて、Windowそれ自体に a を適用し、実際にはオフスクリーンから文字通りスライドさせることをお勧めします。X以下に簡単で汚い例を示します。適切な効果を得るために、座標の値と を操作したいと思うでしょうがKeyTime、うまくいけばこれが役に立ちます。乾杯

<Window.RenderTransform>
    <TranslateTransform x:Name="SlideTheThingy" X="1000" />
</Window.RenderTransform>
<Window.Triggers>
  <EventTrigger RoutedEvent="Window.Loaded">
     <BeginStoryboard>
        <Storyboard>
           <DoubleAnimationUsingKeyFrames Storyboard.TargetName="SlideTheThingy"
                                          Storyboard.TargetProperty="X">
               <SplineDoubleKeyFrame KeyTime="0:0:1.25" Value="0" />
           </DoubleAnimationUsingKeyFrames>
        </Storyboard>
     </BeginStoryboard>
  </EventTrigger>
</Window.Triggers>
于 2014-05-02T14:05:35.713 に答える
0

ウィンドウは左上隅に配置されます。したがって、幅をアニメーション化し、位置が一定のままである場合、ウィンドウは自然に右に大きくなります

探している効果を得るには、.Leftプロパティを使用して Window の位置をアニメーション化する必要もあります。ウィンドウを画面の右側にスナップしてそこからスライドさせたい場合は、Left画面の幅 (およびゼロ ピクセル幅) に一致する の値でアニメーション化を開始し、次に にアニメーション化する必要がありscreenWidth - finalWidthOfWindowます。

于 2013-11-29T12:53:43.773 に答える
0

私は実際にそれを理解しました。サイズをアニメーション化したいコンポーネントの右側に水平方向の配置を設定する必要がありました。そして、それは魅力のように機能しました!

于 2014-04-27T07:39:25.223 に答える