2012-03-11 39 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