广泛的设计/架构问题。如果您在GUI中嵌套了组件,那么这些组件与数据交互的最常用方法是什么?
例如,假设某个组件在其某个按钮上单击以保存数据。是否应该将保存请求委派给该组件的祖先,最上层的祖先最终将请求传递给控制器?
或者GUI应用程序中的模型/数据存储通常是单例,因此层次结构中任何级别的组件都可以直接获取/设置数据吗?
或者是在组件层次结构中注入依赖关系的控制器,以便任何给定组件只是远离数据存储区/模型的一个中介?
答案 0 :(得分:2)
我的第一个想法是定义单例数据层API,可由GUI组件调用。
如果你想要多个数据实例,那么就给出“句柄”,这些句柄可以由GUI组件存储,然后传入数据层以再次获取数据。
这个想法类似于,例如文件系统API;或SQL服务器API;或任何O / S API。
答案 1 :(得分:1)
通常,使用嵌套组件操作的选项很少:
嵌套组件使用与根组件相同的模型/嵌套组件使用自己的模型。
嵌套组件与根组件相同的控制器交互/嵌套组件使用自己的控制器进行操作。
没有一个正确答案可以使用哪个选项。当然,使用相同的模型和相同的控制器是最简单的方法,但如果嵌套组件包含复杂的UI逻辑,则最好将模型或/和控制器分开。
另外,你用什么语言?什么平台?在不同的编程环境中,不同的实现更好。如果您使用平台支持面向对象的基于组件的GUI模型,您可以将嵌套控件封装到用户控件中,并获得可重用的封装易用组件。
我认为对模型/控制器使用单例是个坏主意,特别是你使用带垃圾收集器的语言。使用单例很简单,但是如果在根视图上需要第二个嵌套控件实例呢?
答案 2 :(得分:1)
我同意上面的STO:
只是一个FYI: 如果您需要额外的阅读,您可能还需要查看http://compositewpf.codeplex.com,它解决了可组合UI的普遍问题。