在WPF中的鼠标悬停事件?

Swo*_*per 7 wpf events mouseover onmouseover mvvm

我正在尝试在WPF MVVM应用程序中实现工具提示系统.工具提示应该出现在某个标签中,该标签是MainWindow的一部分(不会悬停在鼠标指针上)并且应该在鼠标悬停时发生(理想情况下具有可配置的延迟,但这并不重要),调用方法在适当的ViewModel中.然后,ViewModel将处理与Model层的联系,该层将解析要显示的工具提示等.

我的问题是如何从视图到ViewModel获取鼠标悬停事件,以及触发事件的对象的身份(所以我可以为它解决正确的工具提示).假设我<Label Name="MyLabel" Content="This is a label" />在我的SettingsView.xaml中有一个,如何让它GetTooltip(string id)在设置视图中使用MyLabel作为参数调用方法(或以其他方式可访问)?我<Trigger>能以某种方式使用常规吗?

Chr*_*ham 1

首先,您尝试过内置ToolTip控件吗?它可能会免费为您提供所需的内容,并且可以对其进行样式/模板化以托管复杂的内容。

其次,您可以使用MouseEnter每个 WPF 控件上可用的事件。不过,您必须将处理程序附加到您想要支持的控件。

为了一般性地覆盖每个控件,请考虑将处理程序附加到父级WindowPreviewMouseMove事件(或OnPreviewMouseMove在 Window 的代码隐藏中覆盖),每当任何子元素即将接收事件时都会调用该处理程序。然后,您可以使用 找出鼠标指针下方的控件HitTest。不过,这并不是非常有效,这就是为什么使用内置ToolTip控件可能会更好。