SciChart - 并非所有图表窗格都能正确缩放

5

我有一个TabControl,其中通过ItemsControl包含动态数量的图表窗格。在ItemsControl的ItemsTemplate内部是一个带有RenderableSeries、XAxis、YAxes和VerticalChartGroup绑定的单个ScichartSurface。

XAML代码大致如下:

<s:SciChartSurface name="Chart" RenderableSeries="{Binding rSeries}" XAxis="{Binding xAxis}" YAxes="{Binding yAxes}" s:SciChartGroup.VerticalChartGroup="{Binding vGroup}">

在表面上,我有一个ModifierGroup,其中包含(按顺序)一个RubberbandXyZoomModifier(仅限于X轴),MouseWheelZoomModifier,ZoomPanModifier,ZoomExtentsModifier和一个自定义的mod调用TimeSegmentSelectionModifier。所有这些修改器的ReceiveHandledEvents属性都设置为True,它们都在同一个MouseEventGroup下,并且在正常情况下似乎都可以正常工作。
注意:橡皮筋和时间段修改器被逆向启用。这意味着一次只有一个功能。
我的主要问题是RubberBand Mod:
假设我正在显示5个图表窗格并且想要缩放;如果我在第3个图表中单击并拖动,每个图表都会正确缩放。 如果我在第3个图表中单击,将鼠标拖到该图表之外(屏幕上的任何其他位置)并松开,那么只有1、2和3号图表会正确缩放。图表4和5不会移动,并且像是我只是缩放到了极限。
这在任何数量的图表窗格上都发生,并且问题发生在我缩放的任何窗格上。
我已经解决这个问题几天了,但我不知道还能去哪里寻找帮助。 非常感谢您的帮助。
1个回答

1

很遗憾我没有早些看到您的问题,但是您描述的问题在这里得到了解决:

为了同步两个图表,您需要执行以下步骤:

在根SciChartSurface.ChartModifier上设置MouseManager.MouseEventGroup附加属性。这将在共享相同MouseEventGroup ID的两个或多个图表之间同步鼠标事件。

在SciChartSurface本身上设置SciChartGroup.VerticalChartGroup附加属性。这将在多个图表上同步Y轴的大小,使图表对齐。

绑定XAxis.VisibleRanges。这确保了您在缩放/平移时始终同步图表(消除了舍入误差)。 这些在我们的示例Synchronize Multi Chart Mouse中进行了演示。

通常人们会忽略最后一步(绑定轴的Visible Ranges)。您的例子是否也是如此?

我们有一个教程,介绍如何同步多个图表:

教程的Github源代码可以在https://github.com/abtsoftware/scichart.wpf.examples的“Tutorials”文件夹中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接