【问题标题】:How do you implement sophisticated UI logic?你如何实现复杂的 UI 逻辑?
【发布时间】:2011-07-21 19:19:38
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

    这个博客系列可能是您正在寻找的:

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

    (可能看起来很多材料,但从“Humble Dialog box”开始,基于Michael Feathers great article)。这都是关于“如何将你的逻辑与你的 UI 代码分离”,这可能会解决你的大部分问题。

    【讨论】:

    • 谢谢,看来正是我需要的!
    【解决方案2】:

    用户界面数据绑定和将您的业务逻辑封装到业务对象是要走的路。 CSLA.NET framework by Rocky Lhotka 内置了许多出色的功能以及许多示例应用程序。我在一个中型 WPF 项目和一个巨大的 WinForms/CAB 应用程序中使用过它,并且非常喜欢它。

    【讨论】:

      猜你喜欢
      • 2019-05-24
      • 1970-01-01
      • 2017-05-13
      • 2011-03-24
      • 1970-01-01
      • 2014-11-04
      • 2022-09-25
      • 2010-12-09
      • 1970-01-01
      相关资源
      最近更新 更多