2011-01-12 19 views
0

WCF呼び出しの後、Silverlightページにいくつかの動的コントロールを追加しようとしています。コントロールを追加しようとすると、エラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。WCFサービスの後にSilverlightアプリケーションに動的コントロールを追加する非同期コールバック

using edm = SilverlightBusinessApplication.ServiceRefrence; 

public partial class ListWCF : Page 
    { 
     edm.ServiceClient EdmClient = new ServiceClient(); 
     public ListWCF() 
     { 
      EdmClient.GetTestCompleted += EdmGetTestCompleted; 
      EdmClient.GetTestAsync(); 
     } 

     private void EdmGetTestCompleted(object sender, edm.GetTestCompletedEventArgs e) 
     { 
      //This is where I want to add my controls 
      Button b = new Button(); 
      LayoutRoot.Children.Add(b); //Error: Object reference not set to an instance of an object 
     } 

    } 

は、ロードされた後にページを変更することはできません:

ここに私のコードの簡易版はありますか?私は何が欠けていますか?

ありがとうございました

答えて

2

はい、読み込まれたページを修正することは可能です。

この種の例外を満たしたときにまず行うべきことは、どの変数がnullであるかを判断することです。デバッガを使用してこれを行うことができます。このコード行にブレークポイントを設定するか、例外がスローされたときにブレークするようにVSに指示し、変数を検査します。私の推測では、LayoutRootはnullです。

クラスコンストラクタでInitializeComponent()の呼び出しが見つかりません。 Silverlightユーザーコントロール内では、この呼び出しによって、XAMLを構築する生成クラスが呼び出され、名前付き要素(x:Name)が検索され、コードからアクセスできます。

+0

+1、良いキャッチInitializeComponent – Josh

+0

私は愚かな、キャッチのおかげで感じる。私は、自分が持っていない問題のためにGoogleの答えを出そうとしています。 – Birk

+0

いいえ問題はありません - うれしいことはそれがシンプルです:-) – ColinE

関連する問題