如何SurfaceWindow
通过用手指拖动/捏合来移动/调整自身大小而不会出现异常行为?我有一个 Surface Window,已IsManipulationEnabled
选中。在ManipulationStarting
中,我有:
e.ManipulationContainer = this; <--- source of unpredictable behavior?
e.Handled = true;
在ManipulationDelta
:
this.Left += e.DeltaManipulation.Translation.X;
this.Top += e.DeltaManipulation.Translation.Y;
this.Width *= e.DeltaManipulation.Scale.X; <----zooming works properly
this.Height *= e.DeltaManipulation.Scale.X;
e.Handled = true;
移动的问题是它会在两个完全不同的位置之间不停地跳来跳去,给它一个闪烁的效果。我在控制台中打印了一些数据,似乎 e.ManipulationOrigin 一直在变化。以下数据是我在屏幕上拖动(仅打印 X 值)并在最后将手指静止一秒钟后的值:
Window.Left e.Manipulation.Origin.X e.DeltaManipulation.Translation.X
---------------------------------------------------------------------------
1184 699.616 0
1184 577.147 -122.468
1062 577.147 0
1062 699.264 122.117
1184 699.264 0
1184 576.913 -122.351
and it goes on
您可以从中看到Window.Left
它在 2 个位置之间跳跃。在我停止用手指移动窗户后,如何让它保持静止?