我希望能够刷新Oxyplot创建的图形,但正努力做到这一点。
理论上,this.model.InvalidatePlot(true);应该更新它,但它不想更新。
MainPage.xaml.cs
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
namespace WeatherStation
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.BuildModel2();
this.BuildModel();
}
public void BuildModel()
{
this.model = new PlotModel();
LineSeries lineserie = new LineSeries();
lineserie.Points.Add(new DataPoint(0, 0));
lineserie.Points.Add(new DataPoint(1, 70));
lineserie.Points.Add(new DataPoint(2, 20));
lineserie.Points.Add(new DataPoint(3, 20));
this.model.Series.Add(lineserie);
this.model.InvalidatePlot(true);
DataContext = this;
}
public void BuildModel2()
{
this.model = new PlotModel();
LineSeries lineserie = new LineSeries();
lineserie.Points.Add(new DataPoint(0, 0));
lineserie.Points.Add(new DataPoint(1, 10));
lineserie.Points.Add(new DataPoint(2, 80));
lineserie.Points.Add(new DataPoint(3, 20));
this.model.Series.Add(lineserie);
this.model.InvalidatePlot(true);
DataContext = this;
}
public PlotModel model { get; set; }
}
}
MainPage.xaml
<Page
x:Class="WeatherStation.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WeatherStation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:oxy="using:OxyPlot.Windows"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<oxy:PlotView Model="{Binding model, Mode=OneWay}"/>
</Grid>
</Page>
此代码背后的一般思想是绘制一个图形,然后下一个图形将其覆盖。如果发生这种情况,我知道以后可以通过触发类似功能来更新它。
答案 0 :(得分:0)
我已修复它。我太笨了,看不到解决方案。
首先我们需要这个
public LineSeries lineserie { get; set; }
我们将其添加到两个BuildModels中:
public void BuildModel()
{
this.model = new PlotModel();
this.lineserie = new LineSeries();
this.lineserie.Points.Add(new DataPoint(0, 0));
this.lineserie.Points.Add(new DataPoint(1, 70));
this.lineserie.Points.Add(new DataPoint(2, 20));
this.lineserie.Points.Add(new DataPoint(3, 20));
this.model.Series.Add(lineserie);
this.DataContext = this;
}
然后我们删除旧的线系列并添加一个新的线系列,然后更新:)
public void BuildModel2()
{
this.model.Series.Remove(this.lineserie);
this.lineserie = new LineSeries();
this.lineserie.Points.Add(new DataPoint(0, 0));
this.lineserie.Points.Add(new DataPoint(1, 10));
this.lineserie.Points.Add(new DataPoint(2, 80));
this.lineserie.Points.Add(new DataPoint(3, 20));
this.model.Series.Add(lineserie);
this.model.InvalidatePlot(true);
}
我们很好。基本上,它在更新该对象时一直在同一个对象上工作,而无需创建新对象。