我想将 2 个图表放在另一个图表下方。我希望他们共享 X 轴。所以当我移动上面的图表时,下面的图表也会移动,缩放也是如此。我发现它是在 Silverlight 的动态数据显示库中实现的。并且执行得非常好。在这里你可以看到实现。“同步数字”。我想要同样的。我该怎么做?
问问题
762 次
2 回答
1
好的。我找到了解决方案。它的工作有点错误,但没关系。如果要共享 X 轴,则必须执行以下操作:
// Add handler
SpeedChart.Viewport.PropertyChanged += new EventHandler<ExtendedPropertyChangedEventArgs>(Viewport_PropertyChanged);
// Respond to changes
void Viewport_PropertyChanged(object sender, ExtendedPropertyChangedEventArgs e)
{
if (e.PropertyName == "Visible")
{
StrokeChart.Viewport.Visible = new DataRect(SpeedChart.Viewport.Visible.XMin, StrokeChart.Viewport.Visible.YMin, SpeedChart.Viewport.Visible.Width, StrokeChart.Viewport.Visible.Height);
}
}
接下来,您必须从 StrokeChart 中删除 MouseNavigation 和 HorizontalAxisNavigation。问题是 StrokeChart 上的点一开始是不可见的,因为 Y 轴上的范围是错误的。但是您只能缩放和拖动 Y 轴以获得正确的值。如果您知道如何解决范围问题,请告诉我。谢谢
于 2013-11-07T04:46:11.067 回答
-1
void Viewport_PropertyChanged(object sender, ExtendedPropertyChangedEventArgs e)
{
if (e.PropertyName == "Visible")
{
if((sender as Viewport2D).Plotter==plotter)
plotter2.Viewport.Visible = new DataRect(plotter.Viewport.Visible.XMin, plotter2.Viewport.Visible.YMin, plotter.Viewport.Visible.Width, plotter2.Viewport.Visible.Height);
else if ((sender as Viewport2D).Plotter == plotter2)
plotter.Viewport.Visible = new DataRect(plotter2.Viewport.Visible.XMin, plotter.Viewport.Visible.YMin, plotter2.Viewport.Visible.Width, plotter.Viewport.Visible.Height);
}
}
private void Window1_Loaded(object sender, RoutedEventArgs e)
{
// Add handler
plotter.Viewport.PropertyChanged += new EventHandler<ExtendedPropertyChangedEventArgs>(Viewport_PropertyChanged);
plotter2.Viewport.PropertyChanged += new EventHandler<ExtendedPropertyChangedEventArgs>(Viewport_PropertyChanged);
}
两个图的全连接。对前文的补充。
于 2015-12-02T21:16:30.940 回答