作者Beramode (Xeno)
看板C_Sharp
標題[問題] wpf路由事件的一些問題
時間Tue Nov 27 10:19:10 2012
剛入門不久,寫了幾個小程式就碰上路由事件的處理
MSDN看完還是有些地方不太明白
MSDN上寫說路由事件的策略分為三種,其中direct就是winform使用的事件模式
只有控制項本身會執行此事件,不會繼續往父項跑,如果我想讓一個控制項使用
策略為direct的事件,是否得自己宣告一個新事件,因為內建事件的策略好像都
是bubble,也找不到可以對單一事件策略修改的方法
以上問題的產生是因為我寫了一個程式,可以用滑鼠直接對程式的window進行拖拉放大
等動作,但因為路由事件的關係,window下的控制項都吃到MouseDown、MouseMove這些
事件,變得無法正常使用了。我嘗試用e.Handled=true來擋掉window.MouseDown的執行,
但是一個控制項就得寫一次,而且有些控制項的MouseDown還不會觸發,變得擋不住(像
textBox就只能用previewMouseDown才能觸發),如果控制項一多,一定會變得很複雜
想請問是否有方法可以讓事件只讓控制項本身使用,底下的成員不會去觸發?
而不是得讓底下成員一個一個去擋bubble
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.238.107
※ 編輯: Beramode 來自: 123.204.238.107 (11/27 10:22)
※ 編輯: Beramode 來自: 123.204.238.107 (11/27 10:32)
1F:→ Beramode:剛剛還發現TextBox的gotFocus在PreviewMouseDown之後 11/27 12:17
2F:→ Beramode:如果在前面寫e.Handled=true focus就不能執行了... 11/27 12:18