我在
UserControl
中有一个自定义Grid
,两者都带有IsManipulationEnabled = true
。 UserControl
(的某些部分)的单指操作应适用于UserControl
(翻译这些部分),但多点触摸输入(和未处理的单点触摸输入)应该平移,旋转和缩放背景 Grid
代替。我目前尝试的解决方案是在IsHitTestVisible = false
上设置ManipulationDeltaEventArgs.IsHandled
(或不设置IsManpulationEnabled = false
,或设置UserControl
),同时在Grid
上检测到至少一次触摸。
我的问题是,如果我在同一操作中将一根手指放在
UserControl
上,然后将另一根手指放在背景Grid
上,他们每个人都会得到一个ManipulationStarting
事件,每个事件都有一个操纵器;然后,当UserControl
不再处理ManipulationDelta
时,Grid
从两者接收ManipulationDelta
,具有不同的ManipulationOrigin
值,并且每个仍然有一个操纵器,因此旋转和缩放是不可能的。
当我无法使用两个操纵器获得统一的
ManipulationDelta
事件时,如何使用多点触控变换?有什么方法可以将它们结合起来吗?还是我必须区分和跟踪它们并手动计算转换?