你如何实现复杂的UI逻辑?

时间:2011-07-21 19:19:39

标签: c# .net winforms architecture user-interface

我正在寻找复杂的UI逻辑实现的最佳实践。我正在开发一个Windows窗体应用程序,但我相信在任何平台上都应该有解决这个问题的通用模式。

我的表单上有很多控件,有列表,按钮,表格和树状视图。因此,我们的想法是,根据“上下文”,某些控件已启用,而其他控件则被禁用。其中一些可以暂时提供一些功能,而另一些则不提供。

目前它已“按原样”实施。我处理事件,检查更改(选择了新树节点,选择了几个节点等),然后决定是否需要禁用或启用某些控件。我真的不喜欢这种方法,因为Form代码看起来很复杂。如果我需要添加更多逻辑,它会变得更加复杂。我真的很担心,因为我们非常敏捷,新功能或许多变化是日常规范。

我很想将所有这些逻辑分成几部分(功能),其中每个功能都是一个知道如何检查其状态的对象,并根据此状态启用或禁用相关控件。

不要真的想发明任何新的东西并试图找到广泛使用的任何好的想法。请不要推荐单一的UpdateUI()方法,我相信从长远来看不会改变任何东西。

感谢。

2 个答案:

答案 0 :(得分:6)

此博客系列可能正是您所寻找的:

http://codebetter.com/jeremymiller/2007/07/26/the-build-your-own-cab-series-table-of-contents/

(可能看起来像很多材料,但只能从基于Michael Feathers great article的“低级对话框”开始。这就是“如何将您的逻辑与UI代码分开”,这可能会解决您的大部分问题。

答案 1 :(得分:2)

用户界面数据绑定和将业务逻辑封装到业务对象中是可行的方法。 CSLA.NET framework by Rocky Lhotka内置了许多强大的功能以及许多示例应用程序。我在一个中等规模的WPF项目和一个巨大的WinForms / CAB应用程序中使用它并且非常喜欢它。