【发布时间】:2011-04-25 10:54:15
【问题描述】:
我将重做一个旧的 WinForms 应用程序作为 WPF 应用程序。这个应用程序的核心是一个自定义的“网格”组件。我想了解作为 WPF 组件执行此操作的最佳方式的一些想法。
应用程序显示不同国家/部门的数据网格。网格的每个单元格显示不同的信息(例如图表、图像),具体取决于该国家/部门的可用数据。
我有一个域模型程序集,我想保持干净 - 以最大限度地重用。结构如下:
- 表
- 大陆
- 国家/地区
- 行业
- 数据[国家、部门]
网格在左侧显示国家,在顶部显示部门。
在当前应用程序中,网格组件有一个 (POCO) Table 属性和一个 Refresh() 方法来手动重绘它。因此,如果 Table 更新,则网格组件的父级会刷新它。如果单击大陆、国家或单元格,网格组件还会触发许多事件 - 以便父级可以通过弹出菜单等进行响应。
这一切都很好。
但是,我想知道这是否是用于 WPF 应用程序的正确模型。查看许多 WPF 示例,它们支持数据绑定等。但是,从简单的示例中,尚不清楚我如何将复杂的对象绑定到我的组件 - 或者它是否值得。
此外,WinForms 组件是完全自定义绘制的 - 没有使用子控件(例如标签)。使用 WPF 用户控件并从 GridLayout 和大量标签、形状等控件构建表格会更好吗?实际上,它们在网格中可能是 20 行和 20 列,用户在使用应用程序时经常删除和添加国家/部门(行/列)。
我的近期目标是确保我的设计在 WPF 生态系统中运行良好,但我还有一个次要目标是学习如何以 WPFy 方式做事 - 因为这是我的第一个 WPF 应用程序。我非常了解构建通用 WPF 应用程序的使用 - 它只是自定义控件的东西仍然有点模糊(即使在阅读了一点之后)。
任何见解/指导将不胜感激。
【问题讨论】:
-
现有控件的图像会有所帮助。
标签: wpf data-binding custom-controls