我有一个 TabControl,它通过 ItemsControl 包含动态数量的图表窗格。ItemsControl\xe2\x80\x99s ItemsTemplate 内部是一个单独的 ScichartSurface,它绑定到 RenderableSeries、XAxis、YAxes 和 VerticalChartGroup。
\n\nxaml 看起来像这样:
\n\n<s:SciChartSurface name="Chart" RenderableSeries="{Binding rSeries}" XAxis="{Binding xAxis}" YAxes="{Binding yAxes}" s:SciChartGroup.VerticalChartGroup="{Binding vGroup}">\nRun Code Online (Sandbox Code Playgroud)\n\n在表面内,我有一个 ModifierGroup,其中包含(按顺序)RubberbandXyZoomModifier (XAxisOnly)、MouseWheelZoomModifier、ZoomPanModifier、ZoomExtentsModifier 和自定义 mod 调用 TimeSegmentSelectionModifier。所有这些修饰符的 ReceiveHandledEvents 属性都设置为 True,它们都在同一个 MouseEventGroup 下,并且在正常情况下它们似乎都工作正常。
\n\n注意:Rubberband 和 TimeSegment 修改器相反地设置为“启用”。这意味着,一次只有其中一个起作用。
\n\n我的问题主要是与 RubberBand Mod 相关:
\n\n让\xe2\x80\x99s 说我有 5 个图表窗格正在显示,并且我想要放大;如果我在第三个图表中单击并拖动,每个图表都会正确缩放。\n如果我在第三个图表中单击,将鼠标拖动到该图表之外(屏幕上的任何其他位置)并松开,则只有图表 1、2 和3 缩放正确。图 4 和图 5 不会\xe2\x80\x99t 移动,就好像我只是缩放到一定程度一样。
\n\n任意数量的图表窗格都会发生这种情况,并且问题会发生在我碰巧放大的任何窗格上。
\n\n我\xe2\x80\x99 几天来一直在解决这个问题,但我不\xe2\x80\x99 不知道还能去哪里寻找。\n非常感谢任何帮助。
\n我希望我早点看到这个,但您所描述的问题已在这里解决:
为了同步两个图表,您需要执行以下步骤:
在根 SciChartSurface.ChartModifier 上设置 MouseManager.MouseEventGroup 附加属性。这将同步共享相同 MouseEventGroup ID 的两个或多个图表之间的鼠标事件。
在 SciChartSurface 本身上设置 SciChartGroup.VerticalChartGroup 附加属性。这会同步多个图表上 Y 轴的大小,以便图表对齐
将 XAxis.VisibleRanges 绑定在一起。这可确保图表在缩放/平移时始终保持同步(消除舍入误差)。这些在我们的示例同步多图表鼠标中进行了演示。
人们经常错过最后一步(将轴可见范围绑定在一起)。您的示例中是否存在这种情况?
我们在这里有一个关于同步多个图表的教程:
教程的 Github 源代码可以在https://github.com/abtsoftware/scichart.wpf.examples的 Tutorials 文件夹下找到。
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |