2012-03-11 2 views
0

次の問題があります。WCFサービスasyncを呼び出した後のWPFプロジェクトのUIの更新

client.GetServiceMapCompleted += (s, e) => 
      { 
       this.MyServiceMap = e.Result; 

       this.MyServiceMap.Categories.Add(new Category() { Name = " " }); 
       this.MyServiceMap.Groups.Add(new Group() { Name = " " }); 

       this.MyServiceMap.Groups.Sort((a, b) => 
        { 
        return String.Compare(a.Name, b.Name); 
        }); 
       this.MyServiceMap.Categories.Sort((a, b) => 
        { 
         return String.Compare(a.Name, b.Name); 
        }); 

       this._parents = MyServiceMap.Nodes; 
       this._children = MyServiceMap.Nodes; 
      }; 

     client.GetServiceMapAsync(); 

私はMyServiceMap、親と子供の特性を有する:UIで

private ServiceMap _serviceMap; 
    public ServiceMap MyServiceMap 
    { 
     get 
     { 
      return _serviceMap; 
     } 
     set 
     { 
      _serviceMap = value; 
      OnPropertyChanged("MyServiceMap"); 
     } 
    } 

    private List<Node> _parents; 
    public List<Node> Parents 
    { 
     get 
     { 
      return _parents; 
     } 
     set 
     { 
      _parents = value; 
      OnPropertyChanged("Parents"); 
     } 
    } 

    private List<Node> _children; 
    public List<Node> Children 
    { 
     get 
     { 
      return _children; 
     } 
     set 
     { 
      _children = value; 
      OnPropertyChanged("Children"); 
     } 
    } 

私は、リストボックスにデータグリッド、子供と両親にMyServiceMapをバインドします。

データグリッドではすべてが想定どおりですが、子と親のリストボックスのフィールドは空のままです。

私の質問は、非同期呼び出し後に私のUIがリフレッシュされないこととその解決方法です。高度で

TNX :)

+0

すべきですか? mainpage.xaml.xsのthis.loadedイベントで – Silvermind

+0

私はモデルを表示するためにdatacontextを設定しました。 私はアイテムのソースを親子にバインドします。 私は非同期を使用しないとき、私はリストを見ることができます:S – Bip

答えて

1

あなたはそう、あなたのUIが変更について通知されないフィールドではなく(あなたがPropertyChangedを上げる)のプロパティを設定しています。

this._parents = MyServiceMap.Nodes; 
this._children = MyServiceMap.Nodes; 

あなたは最小限のXAMLを提供することができ、あなたのレイアウトののDataContextを設定する方法

Parents = MyServiceMap.Nodes; 
Children = MyServiceMap.Nodes; 
+0

Tnx。私はそのコードを見ていて、理由を疑問視しています。 Omgの恥:D – Bip

関連する問題