ロボット アームとファジー ロジックを試しています。私の目標は、ユーザーが作成したメンバーシップ関数(単純な三角形と台形関数)をプロットすることです。oxy Plot 'オブジェクト' は、MainWindow にあるエキスパンダーにあります。プロットの選択は、ほとんどの場合、ドロップダウンまたはテキスト ボックスから行われます。
残念ながら、新しい情報でプロットを更新する方法がわかりません。すべての例は、時間に基づいて動的に見えます。しかし、私はそれがユーザーの要求に基づいている必要があります! 私が見つけることができる最も近い例は、RefreshとTaskのデモ ファイルだと思います。
これまで、次の構文を使用して、タイトルと軸を含む元の空白のプロットを作成できました。
public partial class MainWindow : Window
{
private PlotModel plotModel;
public PlotModel PlotModel
{
get
{
return this.plotModel;
}
set
{
this.plotModel = value;
}
}
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
this.PlotModel = CreatePlot("mag1");
}
private PlotModel CreatePlot(string title)
{
var pm = new PlotModel(title);
return pm;
}
そしてXAML
<Window x:Class="FuzzyGripper.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="clr-namespace:OxyPlot.Wpf;assembly=OxyPlot.Wpf"
Title="MainWindow" Height="800" Width="1000" Closing="Window_Closing" Loaded="Window_Loaded">
...... A ton of stuff ...... then......
<oxy:Plot x:Name="plot1" Model="{Binding PlotModel}"/>
問題は、新しいタイトルのような単純なものでプロットを更新したいときに発生します。OxyPlot は、オブジェクトが MainWindow コンストラクターに配置されている場合にのみ更新できます。たとえば、次のスニペットは、元のプロットが作成された後 ( MainWindow(){} の外側) に呼び出されます。
this.plotModel = CreatePlot("Mag2");
plot1.RefreshPlot(true);
うまくいきません。元のプロットは「Mag1」というタイトルで残っています。コンテキスト、具体的には DataContext に関連する何かが欠けているような気がしますが、言語にあまり慣れていないため、行き詰まっています! そうは言っても、私は Oxyplot に完全に満足しているわけではありません。より良いアプローチがあれば、喜んで試してみたいと思います。読んでくれてありがとう。