【问题标题】:Event Handlers not working with inkCanvas in Windows Universal App事件处理程序不适用于 Windows 通用应用程序中的 inkCanvas
【发布时间】:2016-07-19 19:53:11
【问题描述】:

我无法使 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">

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

【问题讨论】:

  • Windows.UI.Core.CoreInputDeviceTypes.*** 缺少语法 properties
  • @ChrisW。 Windows.UI.Core 包含在 using 声明中,所以相信这不是问题

标签: c# xaml win-universal-app inkcanvas


【解决方案1】:

需要考虑的事情很少。首先,当您声明 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();
        }

希望这会有所帮助。

【讨论】:

  • 我如何使用Core_PointerReleasing?如果我按原样使用它,那么此时我会收到错误
  • No overload for 'Core_PointerReleasing' matches delegate 'TypedEventHandler&lt;CoreInkIndependentInputSource, PointerEventArgs&gt;' DrawingDataCollection 这个错误
  • 我编辑了我的答案,包括 3 种方法。我的示例应用程序触发了所有 3 种方法,没有任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
相关资源
最近更新 更多