Windows 通用应用程序中的事件处理程序无法与 inkCanvas 一起使用

Event Handlers not working with inkCanvas in Windows Universal App

我无法使 PointerPressed、PointerReleased(任何指针事件)工作。

我写了这行代码来支持触摸

inkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch;

根据我在网上找到的解决方案,我试过这个

inkCanvas.PointerReleased += inkCanvas_PointerReleased;

还有这个

inkCanvas.AddHandler(PointerReleasedEvent, new PointerEventHandler(inkCanvas_PointerReleased), true);

并简单地通过 XAML 以及:

     <InkCanvas x:Name="inkCanvas" 
PointerPressed="inkCanvas_PointerPressed" 
PointerMoved="inkCanvas_PointerMoved" PointerReleased="inkCanvas_PointerReleased" 
Tapped="inkCanvas_Tapped">

我正在我的设备(而不是模拟器)中测试该应用程序。我错过了什么?

需要考虑的事情很少。首先,当您声明 InkCanvas 时,您需要让 UIElement 知道它可以期望的输入类型。常用的有3种。

CoreInputDeviceTypes.Mouse ( Desktop / Notebooks without touch capability )
CoreInputDeviceTypes.Pen ( Surfacebooks and other pen enabled devices )
CoreInputDeviceTypes.Touch ( all other devices that accept Touch )

因此您需要确保这些已在您的 InkCanvas 上声明。

完成后,查看从 XAML 调用时是否触发了您的指针事件。如果还是不行,试试下面的方法。

CoreInkIndependentInputSource  core = CoreInkIndependentInputSource.Create(inkCanvas.InkPresenter);
core.PointerPressing += Core_PointerPressing;
core.PointerReleasing += Core_PointerReleasing;
core.PointerMoving += Core_PointerMoving;

编辑 2:下面是所有 3 个动作的方法

        private void Core_PointerMoving(CoreInkIndependentInputSource sender, PointerEventArgs args)
        {
            throw new NotImplementedException();
        }

        private void Core_PointerReleasing(CoreInkIndependentInputSource sender, PointerEventArgs args)
        {
            throw new NotImplementedException();
        }

        private void Core_PointerPressing(CoreInkIndependentInputSource sender, PointerEventArgs args)
        {
            throw new NotImplementedException();
        }

希望对您有所帮助。