一 · 路由事件的三種方式/策略(冒泡 直接 隧道)
WPF中的路由事件是沿着VisualTree傳遞的,作用是用來調用應用程序的元素樹上的各種監聽器上的處理程序。
(1)冒泡,這種事件處理方式是從源元素向上級流過去,直到到達根節點即頂層節點,一般為最外層的控件。
(2)直接,這種處理方式是在源上處理,主要用在源元素上處理。通常setter和trigger中有所體現,我個人認為VisualState可視狀態可能也是直接事件處理,也是依賴屬性的狀態改變。和Trigger有一定的重復,但是VisualState是通過生硬的動畫間接實現依賴屬性的改變。
(3)隧道,又稱作Preview事件,和冒泡事件處理方式相反的。元素樹的根位置調用事件處理程序,依次向下直到源元素位置。
隧道事件和冒泡事件一般成對出現。同一事件,執行時首先是隧道事件,然后是冒泡事件。
二 · Routed Events(路由事件) 與 Commands(命令)
Event 和 Command 是程序內部通信基礎,Routed Events 能夠發起多重控件,並且能有序和用戶溝通。
Commands是.NET Framework 提供的核心構架,來激活和去除高級別任務。
由此衍生的Animation是events的更進一步。讓你能夠以友好互動的方式使用Event架構,來使用多重控件。