さびぬきのネタ

Rubyをよく使います。最近はC#もやや使います。C言語も少し使います。Reactは勉強中です。

ScottPlotはデータバインディングでのMVVMパターンをサポートしていない

WPFで円グラフで表示したかったのでチャート作成ライブラリのScottPlotを使ってみたところ、MVVMのデータバインディングはサポートしていないようでした。

github.com

Githubで公開されているScottPlot Demoアプリでは、サンプルコードが記載されていますが、 データバインディングしてるサンプルがない。。

試しにContentでバインディングしてみたりと試行錯誤するが、円グラフが描画できない。

ScottPlotの公式ドキュメントを見ていたらFAQにMVVM and Data Bindingの記事がありました。 scottplot.net

原文から一部を抜粋

Many charting libraries use MVVM and data binding patterns to interact with plots. ScottPlot does not. This intentional decision allows ScottPlot to be more performant by giving the user raw access to array values used for plotting, and also enabling users to have total control over when new frames are rendered (a potentially costly operation).

Google翻訳すると↓

多くのチャートライブラリは、MVVMとデータバインディングパターンを使用してプロットと対話します。 ScottPlotはそうではありません。 この意図的な決定により、ScottPlotは、プロットに使用される配列値へのrawアクセスをユーザーに提供し、新しいフレームがレンダリングされるタイミングをユーザーが完全に制御できるようにすることで、パフォーマンスを向上させることができます(コストがかかる可能性のある操作)。

パフォーマンスを向上させるためにデータバインディングをサポートしない方針でした。

FAQの原文に記載されている通り、WPFでScottPlotを使用する場合は個別にユーザーコントロールを作成して、ウィンドウから呼び出すように使用するのがよさそうですね。