2017-01-29 3 views
2

Я не могу решить проблему с холстом, плавно перемещающимся из границы экрана в телефоне Windows 8.1, хотя свойство Opacity прекрасно меняется.Холст движущейся анимации в Windows Phone 8.1

<Storyboard x:Name="moveOut"> 
    <DoubleAnimation 
     Storyboard.TargetProperty="Opacity" 
     Storyboard.TargetName="CanvCalling" 
     From="1.0" To="0.0" Duration="0:0:1" /> 
</Storyboard> 

Я решил это для примитивов (эллипс, квадрат) с использованием PointAnimation, но он не работает на холсте.

ранее он работал с использованием ThicknessAnimation и MARGIN собственности, но она не работает в UWP и Windows Phone 8,1

Кратко:

мне нужно изменить MARGIN свойства плавно используя и я хотел бы сделать это в XAML,

OR

Я подозреваю, что это достигается за счет RenderTransform

ответ

1

, решаемые с помощью CompositeTransform в TargetProperty XAML ниже ...

  <Canvas.RenderTransform> 
      <CompositeTransform /> 
     </Canvas.RenderTransform> 

     <Canvas.Resources> 
      <Storyboard x:Name="moveTo"> 
       <DoubleAnimation 
     Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" 
        Storyboard.TargetName="CanvCalling" 
     From="0" To="200" Duration="0:0:1" RepeatBehavior="Forever" 
     /> 
      </Storyboard> 
1

Вы можете использовать LayoutTransform, но это не так чист, как RenderTransform, насколько плавности ... Я почти всегда предлагают RenderTransform, если вы можете, и это должно быть около такой же плавный, как и для анимации XAML.

Когда вы используете LayoutTransform, вы буквально переместите объект в новые спецификации, а с помощью RenderTransform вы просто перемещаете визуальную сторону объекта. Для меня LayoutTransform лучше всего использовать, когда у вас возникают проблемы с отсечением или вам нужно изменить размер/расположение других элементов во время анимации. Например ... Если вы используете RenderTransform/ScaleTransform/Scale.X и Y и увеличиваете размер элемента, он будет просто расти визуально. Взаимодействие с ним будет расти также, поэтому все пользовательские события ввода будут работать, как они должны визуально. Если вы используете то же самое, что и LayoutTransform, элемент управления не будет просто увеличиваться, но весь объект вокруг него будет перемещаться или сжиматься, или что-то еще, что необходимо для размещения нового размера. Хорошим примером может служить строка сетки с установкой высоты, заданной как «Авто». Если вы RenderTransform объект больше, строка не будет изменяться по высоте для размещения, но если вы используете LayoutTransform, строка изменится, чтобы соответствовать новому размеру.

Надеюсь, это поможет.