グラフ上にポイントをプロットするだけのSilverlightアプリケーションがあります。プロットするポイントは、SQLクエリから取得されます。
Silverlightプログラムは、クエリを実行し、関連するデータを独自にプルする必要があります。
この種の機能を実現するにはどうすればよいですか?
ありがとう!
グラフ上にポイントをプロットするだけのSilverlightアプリケーションがあります。プロットするポイントは、SQLクエリから取得されます。
Silverlightプログラムは、クエリを実行し、関連するデータを独自にプルする必要があります。
この種の機能を実現するにはどうすればよいですか?
ありがとう!
1秒/分あたりのデータを何回プロットする必要があるかはわかりませんか?一度プロットするだけですか。その場合、アプリが最初に読み込まれるときに非同期呼び出しを記述し、呼び出しクエリsqlを実行して、結果をコールバックに返します。
プログラムが設定された間隔でデータを返す必要がある場合は、ディスパッチャタイマーなどが必要になります。
このようなものでOK。
public class MyClass : INotifyPropertyChanged
{
public MyClass()
{
DispatcherTimer timer = new DispatcherTimer();
timer.Tick += OnTimerTick;
timer.Interval = TimeSpan.FromSeconds(300);
}
private void OnTimerTick(object sender, EventArgs e)
{
var result = await UpdateGraphPoints();
MyGraphPoints = this.PopulateTheGraph(result);
}
private async Task<List<MyGraphPoint>> UpdateGraphPoints()
{
var oper = await YourDatabaseQueryMethod();
return oper;
}
private ObservableCollection<MyGraphPoint> PopulateTheGraph(object result)
{
}
private ObservableCollection<MyGraphPoint> myGraphPoints;
public ObservableCollection<MyGraphPoint> MyGraphPoints
{
get { return this.myGraphPoints; }
set
{
myGraphPoints = value;
OnPropertyChanged("MyGraphPoints");
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class MyGraphPoint : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int xValue;
public int XValue
{
get { return xValue; }
set
{
this.xValue = value;
this.OnPropertyChanged("XValue");
}
}
private int yValue;
public int YValue
{
get { return yValue; }
set
{
this.yValue = value;
this.OnPropertyChanged("YValue");
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
次に、xamlで-MyGraphPoints監視可能コレクションをグラフコントロールにバインドします。