2012-03-11 59 views
0

我有以下問題。在調用WCF服務異步後更新WPF項目中的用戶界面

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,父母和子女屬性:

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"); 
     } 
    } 

在UI我綁定MyServiceMap到數據網格,孩子和家長到一個列表框。

在一個數據網格中,我看到所有的東西都是假定的,但是孩子和父母的列表框字段仍然是空的。

我的問題是爲什麼我的用戶界面沒有刷新異步調用後,如何解決?

TNX先進:)

+0

你能提供一個簡約的XAML和您設置的佈局DataContext的? – Silvermind 2012-03-11 19:13:35

+0

在mainpage.xaml.xs的this.loaded事件中,我將datacontext設置爲查看模型。 我將項目源綁定到父母和子女。 當我不使用異步時,我可以看到列表:S – Bip 2012-03-11 19:18:33

回答

1

你設置的字段,而不是(在這裏您提高PropertyChanged)的屬性,以便您的用戶界面不會收到通知的變化。

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

應該

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

Tnx。我正在查看該代碼並想知道爲什麼。 Omg羞辱:D – Bip 2012-03-11 19:22:43