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>
能以某种方式使用常规吗?
首先,您尝试过内置ToolTip
控件吗?它可能会免费为您提供所需的内容,并且可以对其进行样式/模板化以托管复杂的内容。
其次,您可以使用MouseEnter
每个 WPF 控件上可用的事件。不过,您必须将处理程序附加到您想要支持的控件。
为了一般性地覆盖每个控件,请考虑将处理程序附加到父级Window
的PreviewMouseMove
事件(或OnPreviewMouseMove
在 Window 的代码隐藏中覆盖),每当任何子元素即将接收事件时都会调用该处理程序。然后,您可以使用 找出鼠标指针下方的控件HitTest
。不过,这并不是非常有效,这就是为什么使用内置ToolTip
控件可能会更好。