【问题标题】:WPF Binding: Throttle the binding list's updatesWPF 绑定:限制绑定列表的更新
【发布时间】:2014-07-30 12:03:02
【问题描述】:

我将 xamdatagrid 绑定到一个列表。但是由于列表上有太多更新,GUI 卡住了。我怎样才能停止这些更新并在间隔(比如 500 毫秒)后刷新网格。将响应式扩展的节流方法有用吗?

【问题讨论】:

    标签: wpf data-binding .net-4.0 system.reactive xamdatagrid


    【解决方案1】:

    您可以使用DeferRefresh 来推迟绑定更新,直到您完成对集合的修改:

    using (collection.DeferRefresh())
    {
        // Make changes to the collection
        ...
    }
    

    如果集合是实时更新的,您可以使用计时器来定期更新绑定:

    private IDisposable _deferral;
    private void refreshTimer_Tick(object sender, EventArgs e)
    {
        if (_deferral != null)
            _deferral.Dispose();
    
        _deferral = collection.DeferRefresh();
    }
    

    【讨论】:

    • 谢谢,是的,收藏正在实时更新,所以根据您的回答,我应该如何使用 refreshTimer_Tick(...)?
    • @vkg,是的。不过,不确定在这种情况下这是不是最好的选择……试试看它是如何工作的;)
    • 我不知道如何在间隔后使用 refreshTimer_Tick(...) 更新绑定?
    • @vkg,只需创建一个计时器并使用此方法订阅 Tick 事件
    • 非常好的实现演练:weblog.west-wind.com/posts/2017/Jul/02/…
    猜你喜欢
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多