2011-09-25 83 views
0

我有一个DataContext设置为ViewModel的XAML页面。在页面上的开关控制被绑定到视图模型以下代码:Silverlight/Windows Phone ViewModel更新问题

public bool TeamLiveTileEnabled 
{ 
    get 
    { 
     return Data.Subscriptions.Any(s => s.TeamName == this.Team.Name); 
    } 
} 

当该页面被初始化时,Data.Subscriptions是一个空列表。我通过异步Web服务调用来检索订阅列表,以便在调用上面的getter之后返回。

当Web服务调用回来时,Data.Subscriptions中添加了项目,并且我希望UI根据LINQ表达式的新结果进行更新。现在没有任何反应,我确认Data.Subscriptions包含满足上述条件的项目。

Data.Subscriptions是订阅项目的ObservableCollection。

有人能指点我该怎么做吗?谢谢!

回答

1

问题是您的ViewModel不知道ObservableCollection的任何更改。在ViewModel中,订阅Data.Subscriptions的事件CollectionChanged

Data.Subscriptions.CollectionChanged += SubscriptionsChangedHandler; 

在事件处理程序通过发送PropertyChanged通知

NotifyPropertyChanged("TeamLiveTileEnabled"); 
+0

谢谢你通知TeamLiveTileEnabled听众,像变魔术一样!我真的不明白我必须做什么,但你的回答帮助我清除了这些通知的概念。 – siger