4

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

xaml 看起来像这样:

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

在表面内,我有一个 ModifierGroup,其中包含(按顺序)RubberbandXyZoomModifier (XAxisOnly)、MouseWheelZoomModifier、ZoomPanModifier、ZoomExtentsModifier 和自定义 mod 调用 TimeSegmentSelectionModifier。所有这些修饰符都将其 ReceiveHandledEvents 属性设置为 True,它们都在同一个 MouseEventGroup 下,并且在正常情况下它们似乎都可以正常工作。

注意:Rubberband 和 TimeSegment 修改器反向设置为 Enabled。意思是,一次只有其中一个起作用。

我的问题主要在于 RubberBand Mod:

假设我有 5 个图表窗格正在显示并且我想放大;如果我在第三个图表中单击并拖动,每个图表都会正确缩放。如果我单击第三个图表,将鼠标拖到该图表之外(我屏幕上的任何其他位置)并松开,则只有图表 1、2 和 3 被正确缩放。图表 4 和 5 不会让步,表现得好像我只是放大到某个范围。

任何数量的图表窗格都会发生这种情况,并且问题发生在我碰巧放大的任何窗格上。

这几天我一直在解决这个问题,我不知道还能去哪里找。任何帮助是极大的赞赏。

4

1 回答 1

0

我希望我早点看到这个,但你描述的问题在这里解决了

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

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

在 SciChartSurface 本身上设置 SciChartGroup.VerticalChartGroup 附加属性。这会在多个图表上同步 YAxis 的大小,以便图表对齐

将 XAxis.VisibleRanges 绑定在一起。这可确保图表在您缩放/平移时始终保持同步(消除舍入误差)。这些在我们的示例同步多图表鼠标中得到了演示。

人们经常会错过最后一步(将 Axis Visible Ranges 绑定在一起)。你的例子是这种情况吗?

我们有一个关于同步多个图表的教程:

教程的 Github 源可以在教程文件夹下的https://github.com/abtsoftware/scichart.wpf.examples找到。

于 2019-03-11T11:32:22.053 回答