4

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

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

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

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

ItemsSource绑定之前绑定可能会被删除SelectedValue。结果,SelectedItem我的数据模型中的 设置为null. 这是没有预料到的!

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

4

1 回答 1

4

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

于 2013-04-18T11:43:51.463 回答