2013-01-16 2 views
-1

Я стараюсь, чтобы получить эффект разблокировки телефона, используя этот код Mimicking WP7 Unlock Page AnimationПодражание WP7 Открыть страницу Анимация ошибка

, но я действительно не знаю, как заставить его работать. У меня нет опыта с 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

ответ

0

Ваш XAML имеет элемент с именем GridTranslate, тогда как ваш код использует gridTranslate - обратите внимание на другой корпус.

Смежные вопросы