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();
}
希望对您有所帮助。
我无法使 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();
}
希望对您有所帮助。