[WPF]「コレクション プロパティ 'Behaviors' は null です」が発生した場合の対処方法

 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 は閉じてから作業を行ってください。

  1. コルタナさんに「フォルダ」等と尋ねてフォルダオプションを開きます
  2. コントロールパネルから開く場合は、「コントロールパネル」>「すべてのコントロールパネル項目」>「エクスプローラーのオプション」です

  3. 「表示」タブの詳細設定で、一時的に「隠しファイル、隠しフォルダー、および隠しドライブを表示する」を選択します
  4. 作業の後は、元の状態に戻してください

  5. エクスプローラーでプロジェクトのルートフォルダを開きます
  6. ※以前の Visual Stuido を使用している場合、「ソリューション名.suo」というファイル名でこのフォルダに .suo が存在します

  7. 「.vs」配下のフォルダを辿り、「.suo」ファイルを削除します
  8. 必要に応じて、先にファイルを退避してください

「.suo」ファイルは再作成されるので、「.vs」フォルダ配下に「.suo」ファイルしか存在しない場合は、フォルダ毎削除してしまっても構わないと思います。

 当然ながら、Visual Studio で行ったブレークポイントなどのユーザーレベルのカスタマイズは、全てリセットされますので、ご注意ください。

おわりに

 以下、参考情報です。

 2 番目は VS 2010 ということで、少し古い情報ですが、内容は参考になるので載せておきます。

この記事をシェア
  • このエントリーをはてなブックマークに追加
  • Share on Google+
  • この記事についてツイート
  • この記事を Facebook でシェア