[WPF] Chartコントロールのデータバインディングで、ドツボにハマりかけたお話

By | Date : 2016/02/27 ( Last Update : 2016/11/19 ) | 1,373 views

カテゴリ : XAML プログラミング タグ: ,

こんにちはー!ニアです。

今回はWPFのChartコントロールでデータバインディングする時に、気を付けることについてお話しします。

今回使用したChartコントロールは

の2つです。

 

 

1. 問題のコード

例えば、Logistic写像「x(n + 1) = ax(n)( 1 – x(n) )」のグラフを描画するプログラムを作成するとします。

chart1

 

 

しかし、このコードを実行すると、Sparrow Chart側ではNullReferenceExceptionが、WPF Toolkit側ではInvalidOperationExceptionがスローされます。

 

2. 解決方法

どちらのChartコントロールも例外がスローされたのは、X座標・Y座標として使用しているPointクラスのNとX_Nがプロパティでなく、フィールドとして定義されていたのが原因です。

LineSeriesのXPathYPath及び、IndependentValuePathDependentValuePathにはプロパティ名を指定する必要があります。

従って、PointクラスのXとX_Nをフィールドでなく、プロパティで定義します。

 

これで、Logistic写像を無事に表示することができます。

chart2

 

3. エラーが起きても、慌てずに落ち着いて!

クラスを利用する側では、メンバーの呼び出す構文がフィールドとプロパティで同じです。

かつて私は、アプリでChartコントロールを使用した時に、XY座標に指定しているメンバーがフィールドになっていたことに気付くのに苦労したことがあります。

Visual Studioでは、クラスなどのメンバーにカーソルを当てると現れるツールチップで、フィールドとプロパティを簡単に判別することができます。

chart3

フィールドの場合、メンバーの前に「(フィールド)」が付いており、プロパティの場合、getとsetの情報が付いています。

 

エラーが起きたら、慌てず落ち着いて対処しましょう。

WPFのクラスで外部に公開するメンバーは、基本的にフィールドではなくプロパティを使うのがよいですね。(PropertyChengedなどのイベントハンドラは例外です。)

 

それでは、See you nex!

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*