【问题标题】:Canvas manipulation event not firing until after first try直到第一次尝试后才触发画布操作事件
【发布时间】: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


【解决方案1】:

试试命令:

rootCanvas.Focus();

这会将焦点设置到您正在点击的画布上,只需在页面的加载方法中弹出此事件即可。

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    相关资源
    最近更新 更多