Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使D3中WPF中的两个图表的X轴共享?_C#_Wpf_Charts_Dynamic Data Display - Fatal编程技术网

C# 如何使D3中WPF中的两个图表的X轴共享?

C# 如何使D3中WPF中的两个图表的X轴共享?,c#,wpf,charts,dynamic-data-display,C#,Wpf,Charts,Dynamic Data Display,我想把两张图表一张放在另一张下面。我希望他们有一个共享的X轴。因此,当我移动上面的图表时,下面的图表也会移动,缩放也是如此。我发现它是在Silverlight的动态数据显示库中实现的。而且实施得很好。我想要同样的。我怎么做?好的。我找到了解决办法。这有点不对劲,但没关系。 如果要共享X轴,则必须执行以下操作: // Add handler SpeedChart.Viewport.PropertyChanged += new EventHandler<ExtendedProp

我想把两张图表一张放在另一张下面。我希望他们有一个共享的X轴。因此,当我移动上面的图表时,下面的图表也会移动,缩放也是如此。我发现它是在Silverlight的动态数据显示库中实现的。而且实施得很好。我想要同样的。我怎么做?

好的。我找到了解决办法。这有点不对劲,但没关系。 如果要共享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);
            }
        }
//添加处理程序
SpeedChart.Viewport.PropertyChanged+=新事件处理程序(Viewport\u PropertyChanged);
//应对变化
void Viewport_PropertyChanged(对象发送器,ExtendedPropertyChangedEventArgs e)
{
如果(如PropertyName==“可见”)
{
StrokeChart.Viewport.Visible=新的DataRect(SpeedChart.Viewport.Visible.XMin、StrokeChart.Viewport.Visible.YMin、SpeedChart.Viewport.Visible.Width、StrokeChart.Viewport.Visible.Height);
}
}
接下来,您必须从StrokeChart中删除鼠标激活和水平轴导航。问题是,由于Y轴上的范围错误,行程图上的点一开始是不可见的。但是,只有在获得正确的值时,才能缩放和拖动Y轴。 如果你知道如何解决范围的问题,请让我知道。感谢

void Viewport\u属性已更改(对象发送方,ExtendedPropertyChangedEventArgs e)
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);
}
{ 如果(如PropertyName==“可见”) { if((发送方作为Viewport2D)。绘图仪==绘图仪) plotter 2.Viewport.Visible=新的数据矩形(plotter.Viewport.Visible.XMin、plotter 2.Viewport.Visible.YMin、plotter.Viewport.Visible.Width、plotter 2.Viewport.Visible.Height); else if((发送方作为Viewport2D.Plotter==绘图仪2) plotter.Viewport.Visible=新数据矩形(plotter.Viewport.Visible.XMin、plotter.Viewport.Visible.YMin、plotter.Viewport.Visible.Width、plotter.Viewport.Visible.Height); } } 已加载私有无效窗口1_(对象发送方,路由目标) { //添加处理程序 plotter.Viewport.PropertyChanged+=新事件处理程序(Viewport\u PropertyChanged); plotter2.Viewport.PropertyChanged+=新事件处理程序(Viewport\u PropertyChanged); }

两个图的完全连接。对上一篇文章的补充。

您使用的是什么图表工具?@Noctis,我使用动态数据显示。哇。。。你的链接让我大吃一惊。。。很抱歉很酷的sh*t。。。wpf工具包严重不足,我玩过OxyPlot,非常高兴。。。现在我得试一下。。。看起来很酷。那么,你有什么问题?不兼容吗?在我看到的示例中,代码是正确的…好的。。。2009年以来没有更新…这就是为什么我从未见过它。。。很酷,但是死在水里。。。给我更多的细节,我会看一看later@Noctis,它们为Silverlight提供了更新的版本。但顺便说一句,在silverlight控件中构建wpf应用程序是不可能的。我想在该链接中制作两个图表,如centerPlotter和bottomPlotter。我有实时数据。每秒1个整数。它必须在第一张图表上。然后我对接收到的数字集进行一些计算,得到第二个数字。这些数字必须在第二张图表上。我对收到的每一个数字进行计算。这两组数字都取决于时间(从流中接收数字)。如果希望在SpeedChart.Viewport.Visible.YMin上面的代码中只有X轴共享变化,那么SturkCurv.VIEWT.VISILY.YMN。您应该考虑添加一些注释。原始代码可能很难阅读