【问题标题】:Why Use IEditableCollectionView?为什么使用 IEditableCollectionView?
【发布时间】:2011-09-08 15:09:29
【问题描述】:

我有一个项目需要完成(感谢一名员工在截止日期前辞职)。

他一直在 WPF 中工作。界面看起来很酷,但它永远无法从公司的旧数据访问 DLL 中收集数据。 (重写 DLL 是个好主意,但在截止日期前的短时间内并不可行)收集数据才是重点!

该项目是向我抛出的,但我不是 WPF 开发人员。我被告知要让它与 WinForms 一起工作,这是我所知道的。我在几个小时内完成了一个 WinForm 界面,它看起来和 WPF 版本一样好......而且我知道它在做什么。 WPF 涉及到我还没学过的 voo-doo。

在 WPF 项目中使用了一些东西,我需要了解它们的作用,而我没有时间完全重新设计它们。

业务逻辑层向 WPF 接口返回一个ObservableCollection

WPF 接口采用ObservableCollection 并使用其Source 参数将其存储在CollectionViewSource 中。

好的,我马上想到DataGridView 控制并使用它的DataSource 参数。

我走上正轨了吗?

IEditableCollectionView 的意义何在?有必要吗?如果没有,我应该删除所有对它的引用吗?

【问题讨论】:

    标签: c# wpf winforms ieditablecollectionview


    【解决方案1】:

    ObservableCollection、CollectionViewSource 等在 WPF 的 MVVM (MVC...+) 方案中很重要。您可以删除它们,但您当然可以在 WinForms 项目中重用它们。这样做实际上可能会更好地保持 UI 和数据之间的清晰分离。

    您也可以继续使用它们并将它们用作“更标准”的集合,这只会导致一些不必要的开销。而且由于按时完成任务至关重要,因此这可能是可行的方法。

    【讨论】:

    • Paul,你的想法在技术上更好,而且它已被标记为答案......尤其是对于那些在这里闲逛的人。但是,Josh 的想法实施起来更快,所以这就是我现在使用的代码。 ;)
    【解决方案2】:

    使用可观察集合,以便在添加、删除或刷新集合时其他控件可以参与。这有助于保持整个 UI 同步。就 IEditableCollectionView 而言,它引发 INotifyPropertyChanged 事件,以便 WPF 表单上的控件在集合中的属性更新时自动更新。

    如果您在 WinForms 中执行此操作,则只需在您的集合发生更改时引发事件。

    【讨论】:

    • 乔希,不知道如何标记答案。我实际上实现了你的想法,但我认为 Paul 的想法是一种更好的技术 - 我只是没有时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2019-10-16
    • 1970-01-01
    • 2011-04-13
    • 2011-08-30
    • 2010-11-01
    • 2015-08-10
    相关资源
    最近更新 更多