WPFなアプリの開発でMVVMタイプの設計で開発をすると避けては通れないのがDataBinding。どうもその筋の人達のブログを見ているとなるべくxaml側の記述で済ませてコードビハインドの部分にはコードを書かない。その代りDataBindingを多用するというのが流行のスタイルの模様。
で、そのスタイルでコードを書いていてどはまりしたのでメモ。
まず、Prismを使用したアプリのVMにこんなコードがありました。
private ObservableCollection<MyData> _myList;
public ObservableCollection<MyData> MyList
{
set
{
_myList= value;
RaisePropertyChanged(() => MyList);
}
get
{
return _myList;
}
}
ある日突然このMyDataのRaisePropertyChangedの部分でArgumentNullExceptionが発生する様になりました。今までは全く問題無かったコードなのに!
で、試しにこの部分を
RaisePropertyChanged("MyList");
こういう風にしてみます。固定の文字列だしnullになる事はありえない。でもやっぱり例外が。
風邪ひいて朦朧とした意識のなかあーでもないこーでもないと考えましたが全くアイディアは浮かばず。ふと、ログを見てみるとbindingエラーが多発しています。
あ、そういえばMyDataのメンバーを変更したけどxamlの方直してなかったなーと。
念の為にそちらを直してみると・・・
例外出なくなりました・・・orz
今までってbindingのエラー出てもコンソールに出るだけでこういう現象は無かったので本筋に関係ない部分は後回しにして放置していましたが、基本コンソールに出ているエラーは全部潰すべきですね。
今回のものに限らずxaml部分で何かが起きると全然違う部分でエラーになるので問題点を特定するのに一苦労します。もう少し開発環境を何とかしてもらわないと開発の効率悪いしMS頑張ってもらわないとね。VS2012で開発しているので新しい環境では直っていたりすると嬉しいんだけど・・・あまり期待は出来ないかなぁ・・・。