使用什么技术编写模块化C#桌面程序?

时间:2014-12-24 15:09:38

标签: c# wpf winforms prism composition

问题:

是否有一些有效的方法可以根据用户设置/权限隐藏WinForm / WPF桌面程序的某些部分?


为什么我需要这个?

我正在开展一个包含数百个表格/对话框的大型会计项目。

该程序将启动一个主窗口,显示1到4个分区。用户选择其中的每一个,然后它将启动一个窗口,其中包含侧边栏上带有一堆按钮的侧边栏(类似于Microsoft Outlook)。现在,当用户点击每个按钮时,它将打开该程序的该部分,用户将使用该部分。根据用户权限/设置,有时需要隐藏其中一些按钮。例如,假设我有4个主要部门A,B,C和D.当您启动A时,您将获得包含A1,A2,...,A100的侧边栏。用户可能会选择只看到A1& A50!

我们最初的方法是使用WinForms,因为团队非常熟悉它。我怀疑,为此,我们必须构建某种模型,其中包含有关用户首选项的信息,并且很多地编写代码行btnA1.Visible = false;

坦率地说,只是想这样做让我感到厌恶。这就是为什么我正在寻找更好的方法来实现这样的结果。我四处搜索,发现PRISM

我还不确定,但我认为使用PRISM我需要将每个按钮或其对话框作为模块并在我决定用户需要哪些按钮后加载它们。

这似乎是一个很好的方法,但考虑到这个项目非常紧急的事实,我们不需要为不同的用户加载不同的模块(我们只需要加载它们 - 理想情况下按需 - 和有时隐藏一些),我有一些顾虑:

  1. 我的团队可能需要一些时间来学习WPF
  2. 我们所有人都不太了解Unity和PRISM。
  3. 这可能过于复杂,即可能有一种更简单的方法来实现这一目标而不会达到这样的长度。
  4. 另外,我正在观看来自Channel9的Prism & Silverlight Series和PRISM5 for WPF。

1 个答案:

答案 0 :(得分:2)

  

一个窗口,其中包含侧栏和侧栏上的一组按钮(类似于Microsoft Outlook)。现在,当用户点击每个按钮时,它将打开该程序的该部分,用户将使用该部分。

听起来像是TabControl。你不应该试图重新发明轮子,因为它已经被发明了。

该示例与您的要求之间的唯一区别在于,不是硬编码您将要绑定到ViewModel集合的标签,例如this,然后让每个{{1}实例根据用户权限/用户选择,切换它自己的TabViewModel属性。

这很简单。无需复杂的MVVM框架。不需要愚蠢过时无用的winforms东西。