【发布时间】:2017-07-11 11:37:30
【问题描述】:
我正在尝试实现一个实用程序来显示系统中随时间变化的吞吐量,并且正在使用 Oxyplot 来可视化数据。
目前,缩放和平移正在按预期工作,但我希望向用户提供一些视觉指示,清楚地显示图形是否可以缩放或平移。
放弃使用滚动条的想法(既不能准确获得图表可见部分的位置,也不能正确定位相对于图表的滚动条的拇指),我决定使用图标显示图表上是否有隐藏在左侧或右侧的数据。
我希望这些图标用作允许用户在图表上左右翻页的按钮,但是与 OxyPlot 相关的所有内容一样,实现比最初看起来要复杂得多。
我正在使用 WPF 实现,它使用一个 ViewModel 表示整个数据集,每个系列项目由它自己的模型表示。 由于 WPF 实现与基本的 OxyPlot 包有很大不同,因此这有效地使几乎所有教程都变得毫无用处。
目前,视图中的代码处理页面左/右按钮的点击。我不能把它放在我的 ViewModel 中,因为它必须直接与 PlotControl 对象交互。
private void btnPageRight_Click(object sender, RoutedEventArgs e) {
CategoryAxis axis = (CategoryAxis)PlotControl.ActualModel.Axes[0];
double xAxisMin = axis.ActualMinimum;
double xAxisMax = axis.ActualMaximum;
double visibleSpan = xAxisMax - xAxisMin;
double newMinOffset = xAxisMax + visibleSpan;
PlotControl.Axes[0].Minimum = newMinOffset;
PlotControl.Axes[0].Maximum = newMinOffset + visibleSpan;
PlotControl.ActualModel.InvalidatePlot(true);
}
就目前而言,上面的代码没有抛出任何错误,但它也不起作用。
如果有人可以建议一种可能的方法,让 OxyPlot 仅使用后面的代码滚动到给定位置,我将不胜感激。 作为最后的手段,我考虑过尝试模拟鼠标拖动事件以使这个挑剔的野兽表现出来。
我发现需要以这种方式解决问题非常令人反感,但绝望会导致奇怪的解决方案......
【问题讨论】: