如何绑定鼠标键至HoverTrack?右键绑定HoverTrack后显示异常咨询
解决OxyPlot右键HoverTrack点击后数据不消失的问题
我之前也碰到过这个坑,问题出在HoverTrack命令的设计逻辑上——它默认是按住鼠标期间持续启用跟踪,但你只绑定了MouseDown事件:这只会触发一次启动跟踪的动作,却没有绑定对应的停止操作,所以控件会一直误以为右键还处于按住状态,直到光标离开PlotView才会自动终止跟踪。
修复方案
给右键的MouseUp事件绑定CancelHover命令就行,这样松开右键时就会立即停止跟踪,数据也会随之消失。修改后的代码如下:
var plotViewMain = new PlotView(); var controller = new PlotController(); controller.UnbindAll(); // 左键绑定平移功能 controller.BindMouseDown(OxyMouseButton.Left, OxyPlot.PlotCommands.PanAt); // 右键按下启动跟踪,松开停止跟踪 controller.BindMouseDown(OxyMouseButton.Right, OxyPlot.PlotCommands.HoverTrack); controller.BindMouseUp(OxyMouseButton.Right, OxyPlot.PlotCommands.CancelHover); plotViewMain.Controller = controller;
原理说明
HoverTrack:触发后开启数据跟踪模式,显示光标位置对应的系列数值CancelHover:主动终止跟踪模式,隐藏显示的数值信息
通过同时绑定鼠标按下和松开事件,就能实现“按住右键时显示数据,松开后立即消失”的预期效果,不用再等光标离开PlotView了。
内容的提问来源于stack exchange,提问作者Log Dog
相关产品推荐
相关产品推荐

