下面列举常用的鼠标事件:事件触发条件MouseLeave鼠标离开控件时发生MouseEnter鼠标进入控件时发生MouseMove鼠标移动过程中重复发生MouseDown鼠标键按下时发生MouseLeftButtonDown鼠标左键按下时发生MouseRightButtonDown鼠标右键按下时发生MouseUp鼠标键松开时发...
MouseEnter:鼠标移动到元素时触发事件
MouseLeave:鼠标离开元素时触发事件
PreviewMouseMove:隧道路由事件,鼠标移动时触发MouseEventArgs事件
MouseMove:冒泡路由事件,鼠标移动时触发MouseEventArgs事件
一个对象:
MouseEventArgs:触发事件
举例,在
WPF
项目中,捕获鼠标的位置。当鼠标在上方蓝色矩形中移动时,在最下方TextBlock中显示鼠标位置。
Uielement和ContentElement都定义了十个以Mouse开头的事件,8个以PreviewMouse开头的事件,MouseMove,PreviewMouseMove,MouseEnter,Mouseleave的事件处理器类型都是MouseEventHandler类型。这些事件都具备对应得MouseEventargs对象。(没有pre的enter和leave)。
当鼠标穿过一个E
InitializeComponent();
btn.AddHandler(Button.MouseDownEvent, new MouseButtonEventHandler(Btn_MouseDown));
btn.AddHandler(Button.MouseUpEvent, new MouseButtonEventHand
鼠标的信息由SystemInformation类提供。SystemInformation类的静态属性(节选)
关于鼠标信息
类型 属性 访问方式 说明
bool MousePresent 读取
目录
WPF
中的事件
WPF
中的树形结构导入
WPF
中的事件
事件在
WPF
中升级成了路由事件,这种机制在很大程度上减少了对程序员的束缚,使得程序设计与实现变得更加灵活,模块之间的耦合度(coupling degree)进一步降低(因为不同模块间不需要指名道姓的列出绑定/关联)。
WPF
中的树形结构
路由事件有路由两字。
路由,可以通俗地理解为路径由来(或者在链路中传递经过的路径),路由器就是这样,记录在网络中传递的经由点,供消息包在节点间传递中转使用。那既然
WPF
中有路由事件,那路由事件是在怎样的链路中传递呢?
在这个例子中,我们定义了一个MouseMoveCommand命令,它将鼠标移动事件处理程序绑定到ViewModel中的MouseMove方法。我们使用RelayCommand类来实现这个命令,这个类可以将任何方法转换为ICommand接口。
2.在XAML中绑定MouseMove事件到ViewModel中定义的MouseMoveCommand命令。例如:
<Canvas MouseMove="{Binding MouseMoveCommand}">
<!-- 在Canvas中添加其他控件 -->
</Canvas>
在这个例子中,我们将Canvas的MouseMove事件绑定到ViewModel中的MouseMoveCommand命令。这将自动调用ViewModel中的MouseMove方法来处理鼠标移动事件。
3.在ViewModel中实现MouseMove方法。例如:
private void MouseMove(MouseEventArgs e)
if (e.LeftButton == MouseButtonState.Pressed)
// 处理鼠标拖动事件
// 处理鼠标移动事件
在这个例子中,我们检查鼠标左键是否按下。如果是,我们处理鼠标拖动事件。否则,我们处理鼠标移动事件。
注意,在MVVM模式中,我们将所有用户交互操作转移到ViewModel中处理。这样可以使应用程序更容易维护和测试,因为View不再包含任何业务逻辑。