依存プロパティ(依存関係プロパティ)でバインディング

d:id:cu39:20090719:updatecontrols を書いた時点では、MVVM パターンもしくは MVP パターン(らしき)構成のとき INotifyPropertyChanged を利用したバインディングと比べて Update Controls .NET の手軽さを感じたんですが、依存プロパティもしくは依存関係プロパティ(MSDN の訳語は後者)を使ったバインディングのほうはよくわかってなかったので実装してみました。

パフォーマンスの最適化 : データ バインディング」(MSDN)を読むと、依存プロパティを利用したデータバインディングはリフレクションを利用する必要がなく、INotifyPropertyChanged を利用するよりも低負荷だと推奨されてます。実装の手間がそれほどでなければこれで済ませたいんですが、そのあたりを検討したいなと。

挙動は前回と同じものを作ります。まず「未確認飛行 C」の例を参考に基本的なクラスから作っていきます。

続きを読む

UpdateControls.NET がすごい件

ここんとこWPFにプチハマり中(いい意味で)なんですが、ふとしたきっかけで*1 INotifyPropertyChanged Is Obsolete というセンセーショナルなタイトルの記事に釣られ、そこで Update Controls .NET というオープンソースライブラリのことを知りました。

WPF では Model-View-ViewModel パターンが常套手段とされているわけですが、 Model を View にバインディングするためには ViewModel で INotifyPropertyChanged インターフェースとか DependencyObject を継承して実装する*2という、なかなか面倒な手順が必要。しかし UpdateControls を使うと、その手間をかなり軽減できます。

ライセンスは LGPL 、現時点の最新版は 2.0.4.3 (2009/06/28) 、2008/05/16に最初のLGPL版がリリースされたようですがその前は未詳。

理由はよくわからないけど*3、日本語で紹介されている例が(ぐぐった限り)見つからなかった*4ので、簡単に紹介したいと思います。Perry さんの記事には部分的なコードの紹介にとどまってるのと、公式サイトのイントロやデモ(ダウンロードページから落とせる)も最新版を使って動かすには調整が必要みたいなので、現時点でそのまま動く最低限のサンプルを。

*1:INotifyPropertyChanged を軸にいろいろぐぐってただけ。

*2:実例は「[http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx:title=WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン]」(MSDNマガジン Feb. 2009)や「[http://blogs.wankuma.com/kazuki/archive/2009/02/23/168586.aspx:title=Model View ViewModelパターンでハローワールド ]」(かずきのBlog)などを参照。

*3:他にもう有名な何かが存在するとか?

*4:[http://cs.gogo-asp.net/blogs/naoki/archive/2007/02/09/ASP.NET-AJAX-_6E30C930AD30E530E130F330C8304C30C030A630F330ED30FC30C930EF53FD80673059300230_.aspx:title=ASP.NET のコントロール] とか [http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/win.102/B25023-01/dcmethods.htm:title=Oracle のメソッド] とかは出る。

続きを読む

Ruby on Rails 2.2.2 をさくらスタンダードにインストール

先日思い立ってやってみたときのメモを置いてみます。参考サイトは適宜リンク。

以下 ID は FOOBAR で foobar.net というドメインと関連づけられているものとします。現時点で 2.3.2 ではうまく動かせていないので 2.2.2 を指定。

続きを読む