Wpf 操纵事件使按钮停止工作

Wpf 操纵事件使按钮停止工作,wpf,touch,Wpf,Touch,我正在一个没有触摸功能的工作站上开发触摸应用程序。我已经在应用程序中设置了向前和向后滑动操作。问题是,现在按钮不会点击。有没有一种方法可以在页面级别进行操作,并且仍然可以正确执行按钮命令 private void OnElementManipulationStarting(object sender, ManipulationStartingEventArgs e) { e.ManipulationContainer = (sender as FrameworkE

我正在一个没有触摸功能的工作站上开发触摸应用程序。我已经在应用程序中设置了向前和向后滑动操作。问题是,现在按钮不会点击。有没有一种方法可以在页面级别进行操作,并且仍然可以正确执行按钮命令

    private void OnElementManipulationStarting(object sender, ManipulationStartingEventArgs e)
    {
        e.ManipulationContainer = (sender as FrameworkElement);
    }

有点复杂。看起来,当操纵被激活时,按钮接收触地事件,但当操纵窃取触地设备时,触地不会在按钮上触发

我找到的解决方案是在按钮控件上附加一个特定的行为,该行为将在操作开始之前捕获设备:

public class ForceCaptureBehavior: Behavior<FrameworkElement>
{

    protected override void OnAttached()
    {
        base.OnAttached();

        AssociatedObject.TouchDown += OnTouchDown;
    }

    void OnTouchDown(object sender, TouchEventArgs e)
    {
        e.TouchDevice.Capture(AssociatedObject);
        e.Handled = true;
    }

}
公共类ForceCaptureBehavior:行为
{
受保护的覆盖无效附加()
{
base.onatached();
AssociatedObject.TouchDown+=OnTouchDown;
}
void OnTouchDown(对象发送方,TouchEventArgs e)
{
e、 TouchDevice.Capture(关联对象);
e、 已处理=正确;
}
}
现在,您的按钮将如下所示:

<s:SurfaceButton Content="Click!" Width="200" Height="150" Click="Button_Click">
    <i:Interaction.Behaviors>
        <local:ForceCaptureBehavior/>
    </i:Interaction.Behaviors>
</s:SurfaceButton>


您需要将Windows.System.Interactive和Microsoft.Expression.Interactions程序集添加到项目中。

是否可以发布一些代码。如何捕获触摸事件?WPF操纵事件。我正在使用操纵开始、操纵增量和操纵完成。我正在寻找一种解决方案,不必用行为装饰每个UI控件。在本例中,将操纵事件处理程序附加到UI背景中的元素,而不是其continer。