0

Visual Studioのエディター(xaml / design)がargumentnullexception、 "value can be null"をスローした場合、どのように処理しますか?

エンティティフレームワークを使用してデータベースからいくつかの値を読み取り、それらを監視可能なコレクションに格納して、xamlからそれらにバインドできるようにしています。コレクションに値がない可能性があると想定するのは論理的ですので、例外は正しいですよね?データベースに値がある場合でも、エディター(デザインモードで表示している場合)が値を取得するためのアプリケーションを実行していないため、例外がスローされます。これは通常のことです。

アプリケーションを実行すると、すべてが正常に機能しますが、例外は非常に煩わしいものです。

また、データベースから読み取るときにtry catchを使用すると、アプリケーションの実行時ではなくエディター(xaml)でのみエラーが発生します。「指定された名前付き接続が構成に見つからないか、で使用するためのものではありません。 EntityClientプロバイダー、または無効です。スタックトレースにより、エンティティデータモデル自体に移動します。バックエンドとしてmysqlを使用しています。xamlに何か(文字)を入力するたびに、エラーのあるこのメッセージボックスがスローされます。

私のユニットテストと統合テストはすべて正常に機能します。

ところで、これは正常ですか?

編集:ビューモデルの初期化をアプリリソース(app.xaml.csではあるがapp.xamlではない)に追加すると、機能するようです。xamlでコードを記述したとき、またはデザインに切り替えて外観を確認したときに、エラーが表示されません。

4

2 に答える 2

1

デザイナーを表示し、デザイナーの例外なしにxamlでコードを記述できるように、デザインモードのサンプルデータをデザインできます。このために、DesignerPropertiesクラス(例DesignerProperties.GetIsInDesignMode(this)など)を使用する必要がある場合があります。私は同様のXAMLデザイナーのクラッシュに直面し、この手法を使用して解決しました。さらに支援が必要な場合は、このガイドラインを読むことをお勧めします。

于 2011-07-06T08:08:15.977 に答える
0

デザイナをデバッグできます:-)

このために、モデルにブレークポイントを作成します(最初に)

[デバッグ]の下のプロジェクトオプションで、[外部プログラムから開始]を選択し、devenv.exeを選択します。

これで、プロジェクトを実行すると、新しいVisualStudioインスタンスが表示されます。新しいVisualStudioインスタンスでウィンドウを開くと、VisualStudioの最初のインスタンスでブレークが発生するはずです。

于 2011-07-06T06:51:30.107 に答える