2016-07-07 2 views
0

В настоящее время я переношу старую игру, сделанную для Windows Phone 8 в WPF/Silverlight, на универсальную платформу Windows. Я сделал письма, которые вы можете перемещать на холсте с помощью класса MouseDragElementBehavior. Есть ли что-то подобное в UWP для этого класса?MouseDragElementBehavior в UWP

+0

Почему вы не проводите мероприятие ManipulationDelta? – Apoorv

+0

Я думаю, что однажды увидел пакет в самородок, который должен был иметь wpf как поведение для проектов uwp –

ответ

0

Существует событие под названием ManipulationDelta, которое предлагается в комментариях. Вот как вы можете использовать его:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Canvas> 
     <TextBlock 
      FontSize="64" 
      ManipulationDelta="LetterA_ManipulationDelta" 
      ManipulationMode="All" 
      RenderTransformOrigin="0.5,0.5" 
      Text="A"> 
      <TextBlock.RenderTransform> 
       <TranslateTransform x:Name="dragLetterA" /> 
      </TextBlock.RenderTransform> 
     </TextBlock> 

     <TextBlock 
      FontSize="64" 
      ManipulationDelta="LetterB_ManipulationDelta" 
      ManipulationMode="All" 
      RenderTransformOrigin="0.5,0.5" 
      Text="B"> 
      <TextBlock.RenderTransform> 
       <TranslateTransform x:Name="dragLetterB" /> 
      </TextBlock.RenderTransform> 
     </TextBlock> 

     <TextBlock 
      FontSize="64" 
      ManipulationDelta="LetterC_ManipulationDelta" 
      ManipulationMode="All" 
      RenderTransformOrigin="0.5,0.5" 
      Text="C"> 
      <TextBlock.RenderTransform> 
       <TranslateTransform x:Name="dragLetterC" /> 
      </TextBlock.RenderTransform> 
     </TextBlock> 
    </Canvas> 
</Grid> 

код позади выглядит следующим образом:

private void LetterA_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
{ 
    dragLetterA.X += e.Delta.Translation.X; 
    dragLetterA.Y += e.Delta.Translation.Y; 
} 

private void LetterB_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
{ 
    dragLetterB.X += e.Delta.Translation.X; 
    dragLetterB.Y += e.Delta.Translation.Y; 
} 

private void LetterC_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
{ 
    dragLetterC.X += e.Delta.Translation.X; 
    dragLetterC.Y += e.Delta.Translation.Y; 
} 

Как просто.

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