【问题标题】:Refresh/Reset View刷新/重置视图
【发布时间】:2010-03-23 10:08:36
【问题描述】:

我在 WPF 中使用 MVP,我遇到了一个设计疑问,我想请教您对此的看法:

有时我需要刷新视图并执行相同的初始查询,例如在加载视图时。视图的 DataContext 是我的演示者,我有几个集合和其他绑定到视图的变量。当我需要刷新视图时,我正在清除集合和变量并将 DataContext 设置为 null。之后我获取新数据,填充集合并设置 DataContext。这是实现这一目标的最佳方式吗?

这个问题是我害怕当我的应用程序变大时我忘记重置一些变量......理想的是以某种方式再次重新加载视图而不必担心我拥有的变量.

最好的问候。

【问题讨论】:

    标签: wpf refresh mvp reset


    【解决方案1】:

    Jay,WPF 的设计理念是数据驱动的。鉴于这一事实,我建议您无需将 DataContext 设置为 null 或重新加载视图。相反,您可以使用可观察的集合或在 DataContext 对象中实现 INotifyPropertyChanged,以提醒视图注意数据正在清除和刷新。

    【讨论】:

    • 嘿 Ed,我明白你的想法,我同意(至少部分同意)。问题是,我有很多变量绑定到视图,所以我必须手动重置所有变量( propertychanged 负责 UI 更新)。清除我的集合(假设它们是可观察的)会清除文本块值和 ComboBoxes SelectedItems?这可以满足我的目的……我没有使用 Observ。集合,因为我不想逐项构建它们(对于我的情况),因为开销......构建几个 Obs。大约 10 个项目的集合会产生重大影响?
    • Jay,这可能是您必须进行一些性能测试的领域。一个想法:您可以使用实现 IList 的集合,而不是 ObservableCollections,然后在添加/删除所有项目后使用 INotifyPreportyChanged。这样,您只有在添加所有内容后才会获得更新,而不是每个项目一次。
    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多