【问题标题】:UI Design Question - Controls Hiding and ShowingUI 设计问题 - 控件隐藏和显示
【发布时间】:2010-06-28 05:29:20
【问题描述】:

我的应用程序中有一个 Winform。表单包含很多控件 从单选按钮..到文本框到按钮到复选框。 要求之一是根据许可模式的类型确定 选项应显示或隐藏或启用或禁用。

例如,应用程序有两种许可模式: 1) 正常 2) 高级

在正常模式下,只需要显示几个控件,比如只有 3 个文本框和 2 个按钮。 和几个复选框

在高级模式下,所有项目都需要显示,只有少数复选框可以编辑。

目前我已经直接在代码中完成了... 我敢肯定,将来会有更多的控件添加/删除或制成高级模式和东西!

我能否以简单的方式设计启用和禁用... 可能我会根据 XML 文件获得需要禁用或启用的控件列表。 ?

对设计的任何帮助都将不胜感激。

【问题讨论】:

    标签: c#


    【解决方案1】:

    如果您为 UI 使用控制器,则“显示/隐藏”逻辑应保留在控制器中(这是一个业务规则)。 我在控制器中使用诸如“CanCurrentUserSeeEditButton”之类的属性来确定控件是否应该可见,然后在 UI 中我使用数据绑定来设置控件“可见”或“启用”属性以绑定到控制器逻辑(INotifyPropertyChanged 是为所有控制器属性实现)。

    这意味着我可以在没有 UI 的情况下对启用/可见逻辑进行单元测试。

    这无助于自动添加新控件,但可以更轻松地跟踪每个新控件是否需要什么。

    【讨论】:

      【解决方案2】:

      我可能想添加一个扩展属性提供程序,因此您可以简单地设置一个出现在 IDE 属性面板中的新伪属性。

      一个类似的例子(使用“principal”进行基于角色的检查)is shown here

      但是请注意,对于具有编程知识的人来说,绕过任何简单的事情都是很容易的。

      【讨论】:

        【解决方案3】:

        我会使用两个块(如组或其他东西),一个用于普通,一个用于高级,这样你只能隐藏整个块。 比如:

        + Normal options ----------------------------+
        | ( ) check this to ..                       |
        | Name: [                    ]               |
        +--------------------------------------------+
        
        + Advanced options --------------------------+
        | IP: [               ]                      |
        | Host: [                    ]               |
        | Mode: ( ) ...                              |
        |       ( ) ...                              |
        +--------------------------------------------+
        

        【讨论】:

          【解决方案4】:

          我不确定这是否是一个好习惯,但如果模式的数量不是很大,比如 3 或 4,您可以创建多个用户控件,然后在需要时将它们直接动态粘贴到主窗体。

          这种方式相当方便 - 您可以轻松地在单独的控件中维护所有未来的更改。唯一的问题是在加载控件时传输数据,但也可以通过一些额外的属性或方法来解决。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-11-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-23
            相关资源
            最近更新 更多