两个月前,我写了一个基于XAML的应用程序的重新设计(软件设计)。我想我在开发过程中犯了很多架构错误,这导致了应用程序的UI部分难以扩展、维护、代码难以理解的情况。我的应用程序是用MVVM风格的PRISM 4编写的,但是尽管Prism是为模块化设计而发明的,但我的应用程序被证明是非常单一的。我将继续在新设计中使用PRISM 4,但这一次我希望将应用程序的UI部分分解为更小、可重用、可扩展的构建块。
假设我们正在设计数据输入form.Top容器,其中包含保存、取消按钮和TabControl,其中包含包含大量分组输入控件的2-3个选项卡。

与UI设计完全不同的是:静态(编译时),动态(运行时)。静态的,它是在编译之前预定义UI的时候,也就是在XAML中定义列的DataGrid。动态的,当您在运行时组合UI时,即在XAML中定义DataGrid,但在运行时根据用户提升添加列。
当你决定使用哪一种规则时,你使用什么规则,饱和还是动态?在这个特殊的例子中你会选择什么?
下一个大问题是如何将UI分解成碎片。
定义UserControls时使用哪些规则,如何定义此示例表单的UserControls?关于ViewModels,您是为这个示例表单创建单个VM还是创建多个VM(解释)?当ViewModel包含其他ViewModels (不是简单的模型包装,而是包含逻辑的实际VM )时,您会怎么想?
现在最难的问题至少对我来说。扩展UI构建块(UserControls和ViewModels)。
当您需要创建某个表单的副本,但是接口和逻辑稍有不同时,尤其是当您需要在UI中集成授权(权限)时,情况就会非常常见。假设我们需要支持不同版本的out示例表单(不管确切版本有多少,假设2-6版本)。
我可以想到这些解决这个问题的方法:
其他我想不起来的东西。
发布于 2011-09-20 19:58:59
根据我的经验,发展道路往往是这样运作的:
有时候,我事先就知道我需要使用第3种方法,我从一开始就设计它。
但是WPF和MVVM的优点之一是,即使我从一开始就没有为此而设计,如果环境需要的话,朝这个方向移动也不是太难。将一组视图模型属性重构到一个视图模型集合中并不需要花费大量的时间或精力。
不过,我可以告诉你:复制一个XAML对象并对其进行编辑,会在我的脑海中发出klaxons的声音。这是可以想象的情况下,这可能是好的,但这不是赌博的方式。
https://stackoverflow.com/questions/7490653
复制相似问题