画布操作事件直到第一次尝试后才触发

本文关键字:第一次 布操作 操作 事件 | 更新日期: 2023-09-27 18:03:56

我试图通过使用' 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,断点被击中,即使操纵delta和保持断点没有。

任何想法?

画布操作事件直到第一次尝试后才触发

试试命令:

rootCanvas.Focus();

这将把焦点设置在你正在点击的画布上,只需在页面的load方法中弹出此事件