添加点(调度程序)时OxyPlot不更新视图

时间:2017-03-22 08:24:52

标签: c# .net wpf xaml oxyplot

我正在开发一个性能监视器,显示将某些x / y点绘制为AreaSeries。为了演示我几秒钟更新我的视图并添加测量点。由于InvalidOperationException,我需要在Dispatcher之间添加点。我希望实时看到添加的点 - 但视图不会更新。这些点或其他任何东西都没有问题,因为之前添加了所有点,我得到了我的情节。

.xaml文件

<UserControl x:Class="Gauge_3.PerformanceMonitor"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Gauge_3"
             xmlns:oxy="http://oxyplot.org/wpf"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <oxy:PlotView x:Name="fMonitor" Grid.Row="0" HorizontalContentAlignment="Stretch"/>
        <oxy:PlotView x:Name="sMonitor" Grid.Row="1"/>
        <oxy:PlotView x:Name="nMonitor" Grid.Row="2"/>
    </Grid>
</UserControl>

.cs片段,从另一个类调用

public void PlotRealTime(double percent)
        {
            this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
            {
                DataPoint dPoint = new DataPoint(new DateTime(2017, 01, 01, 14, internalCounter, 00).ToOADate(), percent);
                sArea.Points.Add(dPoint);
                if (internalCounter == 0)
                    sMonitor.Model.Series.Add(sArea);

                sMonitor.Model.InvalidatePlot(true);
            }));

            internalCounter++;
        }

0 个答案:

没有答案