RadRadialGauge を更新しようとしています。リアルタイムで取得されているデータを (アニメーション化されたニードルを使用して) 表示します。TimeStamp
プロパティを使用してチャートを描画する RadChartView がありValue
ます。グラフを追加するとき、監視している変数に基づいていくつか追加したい場合があります。たとえば、モーター速度と出力周波数を見たい場合は、複数の垂直軸を追加する必要があります。RadChartView のデータ バインディングを処理するコードの一部は次のとおりです。
var lineSeries = new LineSeries();
lineSeries.CategoryBinding =
new PropertyNameDataPointBinding() { PropertyName = "TimeStamp" };
lineSeries.ValueBinding =
new PropertyNameDataPointBinding() { PropertyName = "Value" };
lineSeries.ItemsSource = (chart.Chart as GuiAnalogQueue).Records;
コードの残りの部分は単なる外観処理であり、最後に LineSeries を RadChartView に追加します。
今、ある意味で、このコードを RadGauge に移植しようとしています。値をニードルにバインドして、値が変更されたときにニードルが移動する方法がわかりません。
私が試したXAMLでは、変数Value="{Binding Value}"
にバインディングを追加しようとしましたValueSource
。また、私はやったneedle.Value = chart.Chart.Value;
私はそれを理解できないので、助けていただければ幸いです。
アップデート
これが私が達成しようとしていることです。私のRecords
コレクションには と の 2 つのプロパティがValue
ありTimeStamp
ます。私は自分Value
のRecords
をneedle
値にバインドしようとしています。これは、プログラムでそれを行うための私のアプローチです:
public void InitializeCharts(ChartsVM charts, Theme theme)
{
DataContext = charts;
foreach (cVM chart in charts.Charts)
{
Binding value = new Binding();
value.Source = (chart.Chart as GuiAnalogQueue).Records;
value.Path = new PropertyPath("Value");
needle.SetBinding(Needle.ValueProperty, value);
}
}
ただし、これを行うと、まったく変更needle.Value
されません。MyRecords
は NotifyPropertyChanged("Records") を使用するコレクションなので、Records が変更されるたびに針が変更されることを期待します。
私の元の投稿でわかるように、これらの 3 行は変数を ChartView チャートにバインドする処理を行いますが、RadGauge を機能させることができません。