Visual Studio で WPF アプリケーションをビルドしていると、ごく稀に「XamlObjectWriterException: コレクション プロパティ 'Behaviors' は null です」というようなエラーと遭遇することがあります。
探し方が悪かったのか、検索してもそのものズバリの解決法が見つからなかったので、いちおう記事にして放流しておきます。
どなたかのお役に立ちましたら。
読み込み中です。少々お待ち下さい
エラーの内容
冒頭にも書きましたが、Microsoft Visual Studio で Windows の WPF アプリケーションをビルドしていると、ごく稀に「XamlObjectWriterException: コレクション プロパティ 'System.Windows.Controls.WrapPanel'.'Behaviors' は null です。」というようなエラーがデザインビューで発生することがあります。
'System.Windows.Controls.WrapPanel' の部分は、実装によってそれぞれだと思いますが、独自クラスを含むコレクションをデータソース(DataSource)としてバインドしている時に、その独自クラスがエラーは発生しないけれども正常に動作せず、かつデザイナー用のダミーデータを設定しているような実装だと、デザインビューを表示した時に正常に読み込めずにエラーが発生するようです。
さらに、表示の高速化の為か、この状態がどこかに記憶(キャッシュ)されてしまうらしく、独自クラスの実装を正しく直したとしても、上図のようなエラーが発生したまま消えないことがあります。
ソリューションをクリーンしても、一旦閉じてから開き直しても、はたまた Windows を再起動しても、エラーが解消しないので、ちょっと困ってしまいました。
解決方法
結論からいうと、「suo」(ソリューション ユーザー オプション)ファイルを削除(再作成)すれば解決するようです。
大半の方はご存知かと思いますが、以下にいちおう手順を記します。
前提として、Visual Studio は閉じてから作業を行ってください。
- コルタナさんに「フォルダ」等と尋ねてフォルダオプションを開きます
- 「表示」タブの詳細設定で、一時的に「隠しファイル、隠しフォルダー、および隠しドライブを表示する」を選択します
- エクスプローラーでプロジェクトのルートフォルダを開きます
- 「.vs」配下のフォルダを辿り、「.suo」ファイルを削除します
コントロールパネルから開く場合は、「コントロールパネル」>「すべてのコントロールパネル項目」>「エクスプローラーのオプション」です
作業の後は、元の状態に戻してください
※以前の Visual Stuido を使用している場合、「ソリューション名.suo」というファイル名でこのフォルダに .suo が存在します
必要に応じて、先にファイルを退避してください
「.suo」ファイルは再作成されるので、「.vs」フォルダ配下に「.suo」ファイルしか存在しない場合は、フォルダ毎削除してしまっても構わないと思います。
当然ながら、Visual Studio で行ったブレークポイントなどのユーザーレベルのカスタマイズは、全てリセットされますので、ご注意ください。
おわりに
以下、参考情報です。
2 番目は VS 2010 ということで、少し古い情報ですが、内容は参考になるので載せておきます。