【问题标题】:ClearAllBindings on ComboBox causes source updatesComboBox 上的 ClearAllBindings 导致源更新
【发布时间】:2013-04-16 15:29:33
【问题描述】:

我正在使用 WPF 数据绑定编写一个具有相当大表单的 WPF 应用程序。

我注意到,当我“放开”表单元素时,它们的存活时间比我希望的要长得多,这意味着它们会继续从视图中获取更新,导致我的应用程序明显变慢。为了防止这种情况发生,当 WPF 树的一部分被释放时,我遍历文档并在每个元素上调用 BindingOperations.ClearAllBindings()

现在我遇到了以下问题。如果我的视图包含一个数据绑定的组合框,像这样:

 <ComboBox  ItemsSource="{Binding Path=SourceItems}" SelectedValue="{Binding SelectedItem}" />

ItemsSource 绑定可能会在 SelectedValue 绑定之前被删除。结果,我的数据模型中的SelectedItem 设置为null。没想到!

我的问题是:有没有一种安全的方法来清除表单的所有数据绑定而不会产生这种副作用?

【问题讨论】:

    标签: .net wpf data-binding


    【解决方案1】:

    在典型的 MVVM 应用程序中,将视图的 DataContext 设置为 null 将实现您想要的效果,而无需通过可视化树进行昂贵且容易出错的递归。这是因为 DataContext 是继承的,所有绑定通常都会针对 DataContext 进行。

    【讨论】:

    • 请记住,这可能会导致意外触发事件。例如,当 DataContext 设置为 null 时,我遇到了 SelectionChanged 事件的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2015-11-28
    • 2022-01-11
    • 2014-06-14
    相关资源
    最近更新 更多