-1

このコードを使用して、電話のロック解除効果を取得しようとしています WP7 Unlock Page Animation を模倣しています

しかし、私はそれを機能させる方法を本当に知りません。の経験がなく、定義がないためStoryboard、エラーが発生しますgridTranslate。コードを正しく配置しているかどうかはわかりません。誰かがこれを手伝ってくれますか

私のxamlコードは

<Grid Grid.Row="1" x:Name="LockScreenGrid" Visibility="{Binding LockScreenGridVisibility}" ManipulationDelta="lock_ManipulationDelta" ManipulationCompleted="lock_ManipulationCompleted" >
        <Grid.RenderTransform>
            <TranslateTransform x:Name="GridTranslate" />
        </Grid.RenderTransform>
        <Grid.Resources>
            <Storyboard x:Name="LockScreenSlideAnimation">
                <DoubleAnimation Duration="0:0:1" To="-768"  
   Storyboard.TargetProperty="  
   (UIElement.RenderTransform).  
   (CompositeTransform.TranslateY)" 
   Storyboard.TargetName="LockScreenGrid" d:IsOptimized="True"/>
            </Storyboard>

            <Storyboard x:Name="CoastGrid" >
                <DoubleAnimationUsingKeyFrames Storyboard.TargetName="LockScreenGrid" Storyboard.TargetProperty="(UIElement.RenderTransform)
.(CompositeTransform.TranslateY)">
                    <EasingDoubleKeyFrame x:Name="coastY"           
        KeyTime="00:00:01" Value="0">
                    </EasingDoubleKeyFrame>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </Grid.Resources>



    </Grid>

私の.csコードは

 public SlideTest()
    {
        InitializeComponent();
    }
    private void lock_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
    {

        if (this.gridTranslate.TranslateY < 0.0)
        {
            IEasingFunction function;
            this.CoastGrid.Stop();
            this.gridTranslate.TranslateY = e.TotalManipulation.Translation.Y;
            if ((e.IsInertial) && (e.FinalVelocities.LinearVelocity.Y < -1500) ||
            (this.gridTranslate.TranslateY < (base.ActualHeight / -2.0)))
            {

                this.coastY.Value = (-1.0 * this.LockScreenGrid.ActualHeight);
                function = new CircleEase();
                ((CircleEase)function).Ease(1.0);
            }
            else
            {
                this.coastY.Value = 0.0;
                function = new BounceEase();
                ((BounceEase)function).Ease(0);
                ((BounceEase)function).Ease(2);
                ((BounceEase)function).Ease(5.0);
            }
            this.coastY.EasingFunction = function;
            this.CoastGrid.Begin();
        }
    }
    private void lock_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
    {
        e.Handled = true;
        this.gridTranslate.TranslateY = (this.gridTranslate.TranslateY +
        e.DeltaManipulation.Translation.Y);
        if (this.gridTranslate.TranslateY > 0.0)
        {
            this.gridTranslate.TranslateY = 0.0;
        }
    }

ソースから取得したコードをコピーして貼り付けただけです。参照が必要かどうか、または定義する必要があるかどうかはわかりませんgridTranslate

4

1 に答える 1

0

XAML には GridTranslate という名前の要素がありますが、コードでは gridTranslate を使用しています。大文字と小文字が異なることに注意してください。

于 2013-01-16T06:36:43.057 に答える