您是否注意到单击 Silverlight 按钮时不会触发 MouseLeftButtonDown 和 MouseLeftButtonUp 事件?这样做的原因是按钮通过覆盖 OnMouseLeftButtonDown 和 OnMouseLeftButtonUp 处理程序来处理这两个事件本身。在 OnMouseLeftButtonDown 覆盖中,引发 Click 事件,并且 MouseLeftButtonDown 事件被标记为已处理,因此它不会在可视树中冒泡。OnMouseLeftButtonUp 覆盖还将 MouseLeftButtonUp 标记为已处理。
可以使用 Button 控件的 ClickMode 属性更改此内容。它具有以下值 - 悬停、按下、释放。默认是 Pressed,我们已经解释过了。当我们将 ClickMode 设置为 Release 时,将在 OnMouseLeftButtonUp 覆盖中引发 Click 事件,并且 MouseLeftButtonDown 和 MouseLeftButtonUp 事件将再次在按钮内处理。如果我们将 ClickMode 设置为 Hover,则 Click 事件将与 MouseEnter 事件一起引发,我们也将能够使用鼠标按钮事件。