0

SilverlightWebサイトのカスタムコントロールを設計しました。デバッガーを実行するか、デバッガーを解放してhttp経由でプルアップすると、コントロールは完全に機能します。コントロール自体のデザイナービューでは、同様に正常に表示されます。

この問題は、コントロールをMainPage.xamlアプリにコントロールとして追加すると発生します。設計者は次のように言っています。そして、未処理の例外が発生しました。System.NullReferenceExceptionオブジェクト参照がオブジェクトのインスタンスに設定されていません。

コントロールは、Loaded()イベントの実行中に、WCFサービスからデータをプルします。WCFサービスは、ローカルホストではなく、リモートIISサーバーにあります。

Designer-Viewでサービスからデータをプルできないため、コントロールが壊れていると思います。この問題を回避する方法はありますか?前もって感謝します。

4

2 に答える 2

1

@Lukeが言ったことは別として、問題の核心を実際に修正する必要があります.ロードに失敗すると、データロードコードがスローされます. エラーを適切に処理し、エラーをキャッチして空のデータを返すだけでしょうか? 通常、クラッシュを表示するよりも、何も表示しない (またはメッセージを表示する) 方がユーザー エクスペリエンスに適しています。実際のリリース モードでも、つまりデータ接続が失敗した場合に、コントロールがクラッシュします。

IsInDesignTool プロパティは非常に便利です。データの読み込みに失敗したら、データの空のセットを返す前に、IsInDesignTool が true かどうかを確認します (Luke が言ったように)。そうであれば、ハードコードされたデータのサンプル セットを返します。このようにして、コントロールがロードできず、VisualStudio または Blend が検出されたときに、いくつかのテスト データが表示され、デザイン ビューにコンテンツが入力されたように表示されます。

于 2012-08-14T00:01:00.713 に答える
1

DesignerProperties.IsInDesignToolプロパティを使用できます。trueコードが VS デザイナーや Expression Blend などのデザイナー ツールで実行されている場合、またはそれ以外の場合、このプロパティには値がありfalseます。

Loadedイベント ハンドラーでは、このプロパティの値を読み取り、このプロパティの値が の場合にのみ WCF サービスを呼び出すことができますfalse

于 2012-08-13T21:26:56.240 に答える