Der*_*erd 5 c# xaml canvas swipe windows-phone-8
我正试图通过使用'ManipulationDelta`滑动来制作画布动画.问题很简单.当我运行应用程序时,唯一一次没有触发操作事件是第一次尝试.如果我在画布中的任何位置点击(或滑动)一次,那么第二次它会工作,直到重新启动应用程序.
这是我的XAML代码:
<Canvas Name="rootCanvas" Style="{StaticResource rootCanvas}" Hold="rootCanvas_Hold" ManipulationDelta="rootCanvas_ManipulationDelta" ManipulationCompleted="rootCanvas_ManipulationCompleted">
<Canvas.Resources>
<Storyboard x:Name="menuAnimation">
<DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="(Canvas.Left)" Storyboard.TargetName="rootAnimation" d:IsOptimized="True" />
</Storyboard>
</Canvas.Resources>
<Canvas Name="rootAnimation">
<Grid x:Name="rootContainer" DataContext="{Binding}" Style="{StaticResource rootContainer}">
...
</grid>
</Canvas>
</Canvas>
Run Code Online (Sandbox Code Playgroud)
这是我在C#中的代码
private void rootCanvas_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
if (e.DeltaManipulation.Translation.X > 25 && !menu.IsMenuOpen())
{
MoveViewWindow(150);
hintActive = false;
menu.SetMenuOpen();
return;
}
else if (e.DeltaManipulation.Translation.X < (-25) && menu.IsMenuOpen())
{
MoveViewWindow(0);
hintActive = false;
menu.SetMenuClosed();
return;
}
}
private void rootCanvas_Hold(object sender, System.Windows.Input.GestureEventArgs e)
{
if (!menu.IsMenuOpen())
{
hintActive = true;
MoveViewWindow(25);
}
return;
}
Run Code Online (Sandbox Code Playgroud)
我有一个rootCanvas_ManipulationCompleted地方的断点被击中,即使在ManipulationDelta和保持断点都没有.
有任何想法吗?
小智 1
尝试以下命令:
rootCanvas.Focus();
Run Code Online (Sandbox Code Playgroud)
这会将焦点设置到您正在点击的画布上,只需在页面的加载方法中弹出此事件即可。