其中很明顯的改變就是增加了觸控指標(Touch Pointer)
還有輕拂手勢(Flicks Gesture)
但這兩個新增的東西對於程式開發人員常常造成很討厭的干擾
(也許這就是為什麼在Win7上面這個功能不再是預設屬性了)
在早期的Win32視窗以及.net Form的應用程式之中
有提供底層的API來將這些有關觸控的新增訊息給取消的機制
請參考Disable flicks and mouse pointer
但要把這個方法套用到WPF上面的時候會遇到幾個問題
首先是要使用到unmanagement的Win32 API
這會對WPF的封閉性及安全性造成一些顧慮
另外則是在WPF中已經取消handle這個概念了
所以最多只能針對一整個視窗取消這個功能
要對單一物件基本上是不可能的
幸好WPF中另外提供了簡易的方式
對於希望關掉該功能的控制項,更改對應的屬性
private void DisableTouchStylus(UIElement u)
{
/// disable flicks gesture
Stylus.SetIsFlicksEnabled(u, false);
/// disable press and hold gesture
Stylus.SetIsPressAndHoldEnabled(u, false);
/// disable tap gesture
Stylus.SetIsTapFeedbackEnabled(u, false);
/// disable touch pointer
Stylus.SetIsTouchFeedbackEnabled(u, false);
}
另外,也可以在該控制項的XAML宣告裡面直接更改
例如希望關掉Canvas的觸控效果的話
<Canvas Stylus.IsFlicksEnabled="False"
Stylus.IsPressAndHoldEnabled="False"
Stylus.IsTapFeedbackEnabled="False"
Stylus.IsTouchFeedbackEnabled="False" />
注意,在WPF裡面設定的效果都會套用到所有的子元件
所以如果需要整個視窗都關閉的話,只需要在最外層的視窗設定就好了
--
參考資料
Disable flicks and mouse pointer
Stylus.IsFlicksEnabled 附加屬性
沒有留言:
張貼留言