作者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