【问题标题】:Silverlight/Windows Phone ViewModel updating questionSilverlight/Windows Phone ViewModel 更新问题
【发布时间】:2011-09-25 06:01:32
【问题描述】:

我有一个 XAML 页面,其 DataContext 设置为我的 ViewModel。页面上的一个开关控件绑定到 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。

有人可以告诉我该怎么做吗?谢谢!

【问题讨论】:

    标签: silverlight data-binding windows-phone-7


    【解决方案1】:

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

    Data.Subscriptions.CollectionChanged += SubscriptionsChangedHandler;
    

    在事件处理程序中,通过发送PropertyChanged 通知来通知TeamLiveTileEnabled 的侦听器

    NotifyPropertyChanged( "TeamLiveTileEnabled" );
    

    【讨论】:

    • 谢谢,它就像魔术一样!我真的不明白我必须做什么,但你的回答帮助我理清了这些通知的概念。
    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多