#はじめに
OxyPlotのコントロールPlotViewはバインドしたデータを変更しただけでは更新がされません。
この記事は変更したデータをリアルタイムに反映するための設定の備忘録です。
#変更したデータをリアルタイムに反映させる方法
OxyPlotのこのページに記述してあります。
(1) PlotView
コントロールのModel
プロパティを変更
(2) PlotView
コントロールのInvalidate
を呼ぶ
(3) PlotModel
のInvalidata
を呼ぶ
自分で設定したときに、上記説明と違ったので以下に例を載せます。
#具体例
PlotViewRefreashExample.cs
var myPlotModel = new PlotModel(); //PlotModelの生成
myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = 0.0, Maximum = 1.0 }); //x軸の設定
myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0.0, Maximum = 1.0 }); // y軸の設定
plotView1.Model = myPlotModel; // --(1) , plotView1はPlotViewコントロール
LineSeries myLine = new LineSeries(); //データインスタンスを生成
myPlotModel.Series.Add(myLine); //データをPlotModelへバインド
for(int i = 0; i < 10; i++)
{
myLine.Points.Add(new DataPoint(i, i)); //データの変更
plotView1.Invalidate(); // --(2) , ここでデータの変更が反映され、PlotViewが更新される
myPlotModel.Axes.Clear(); // 軸の変更のため、以前の設定をクリア
myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = 0.0, Maximum = i }); //x軸の設定
myPlotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0.0 , Maximum = i }); //y軸の設定
myPlotModel.InvalidatePlot(true); // -- (3) , ここで軸設定が反映され、PlotViewが更新される
}
例に示したように、PlotViewコントロールのInvalidateを呼ぶだけでは、軸の設定は反映されないので注意してください。