【发布时间】:2014-07-07 05:54:34
【问题描述】:
我正在尝试通过使用“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>
这是我的 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;
}
我有一个rootCanvas_ManipulationCompleted,即使 ManipulationDelta 和 Hold 断点没有,也会触发断点。
有什么想法吗?
【问题讨论】:
-
只是猜测:可能是焦点问题,您是否尝试过在代码中将焦点设置到画布上一次,看看是否能解决问题?
-
@robbievercammen 你解决了这个问题吗?
-
@JTIM,抱歉,我无法再访问此代码了。我记得玩过操纵事件。我唯一记得的是,这段代码有效。这是一个小问题让动画变得混乱。
标签: c# xaml canvas windows-phone-8 swipe