【发布时间】:2017-11-05 16:30:39
【问题描述】:
我在 Scrollviewer 中有一个 Canvas(不是 InkCanvas)。两者都不是在 XAML 中创建的,而是在后面的代码中创建的。我想用笔和鼠标输入在我的画布上画线,一切正常,但现在我用笔作为输入设备测试了整个东西,并且 Scrollviewer 似乎将它识别为触摸输入,因为整个东西开始滚动。
我的问题是:是否可以告诉 Scrollviewer 忽略来自设备类型的所有输入?因为 Scrollviewer 似乎也在“吃掉”应该从 Canvas 触发的事件。
这里是我的 Scrollviewer 初始化:
private void SetUpScrollViewer()
{
scroll = new ScrollViewer();
scroll.VerticalScrollMode = ScrollMode.Auto;
scroll.HorizontalScrollMode = ScrollMode.Auto;
scroll.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
scroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
scroll.ZoomMode = ZoomMode.Enabled;
scroll.ManipulationMode = ManipulationModes.System;
scroll.HorizontalAlignment = HorizontalAlignment.Left;
scroll.VerticalAlignment = VerticalAlignment.Top;
scroll.IsZoomInertiaEnabled = false;
scroll.MinZoomFactor = 1;
scroll.MaxZoomFactor = 5;
}
这些是我在 Canvas 中使用的事件:
public void EnableDrawingOnCanvas(Canvas canvas)
{
//Adding the needed event handler.
canvas.PointerPressed += Canvas_PointerPressed;
canvas.PointerMoved += Canvas_PointerMoved;
canvas.PointerReleased += Canvas_PointerReleased;
canvas.PointerExited += Canvas_PointerExited;
}
并且这些事件都检查输入设备是否是除了触摸之外的一切
if (e.Pointer.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Touch){...}
但是对于这些事件,我只能检查我的 Canvas 的输入设备,如果我向 Scrollviewer 添加一个事件,它不会被传递给 Canvas afaik。
【问题讨论】:
标签: c# .net canvas uwp scrollviewer