在Left上绘制一条垂直线单击MouseDownEvent

时间:2015-09-16 20:02:36

标签: wpf oxyplot tracker

我使用Oxyplot库根据实时数据绘制一些图表。我知道有一个名为Tracker的功能,它会根据用户左键单击的Position显示一些类似工具提示的信息(例如坐标)。只有在按下左键时才会显示信息。

我目前正在线图上测试此功能,不确定它是否适用于其他类型。

我想要做的是将此信息保留在屏幕上,只有当用户尝试设置新信息,点击图表上的其他位置并替换旧信息时才会使其消失。添加用户点击的垂直条也很不错。

我检查了Oxyplot文档,我知道可以自定义此跟踪器,但我找不到适合我情况的解决方案。

编辑:

我发现了this例子,看起来很有帮助,但我正在努力提取它的实用性。请帮忙!

更新:

让我再谈谈我想要实现的目标。我有很多图表,每个图表都放在一个单独的面板(或标签)上。如果我左键单击图表的某个位置,我想在每个图表上显示该特定位置Tracker信息,而用户不会点击另一个图表 position(设置一个新的Tracker并删除旧的Tracker)。换句话说,一次允许一个Tracker,并在同一X位置的每个现有图表上设置。

更新2:

好吧,所以在考虑之后,我决定在点击左键时不保持 select * From acct_db2016.dbo.acct_tran where trc_acno='12008001' 。相反,我只想让在点击位置的每个图表上绘制一条垂直线。一次只允许一行,它可以被视为临时标记"。我相信这比其他方法更可行,并且足以满足我的需求。

1 个答案:

答案 0 :(得分:0)

您可以取消绑定左键并仅通过悬停鼠标来替换它,几乎总是显示跟踪器:

public PlotController customController { get; private set; }

customController = new PlotController();
customController.UnbindMouseDown(OxyMouseButton.Left);
customController.BindMouseEnter(PlotCommands.HoverSnapTrack);

的Xaml:

<oxy:PlotView Controller="{Binding customController}"/>

编辑&gt;&gt;&gt;&gt;&gt;&gt;

TrackerManipulator代码:https://github.com/ylatuya/oxyplot/blob/master/Source/OxyPlot/Manipulators/TrackerManipulator.cs

我认为您应该创建一个自定义TrackerManipulator,并覆盖Complete方法以不执行“this.PlotControl.HideTracker();”线。