在.net中创建动态GUI的最佳方式是什么?

问题描述:

我必须在.net中创建动态GUI。我的要求是,在这个GUI中,GUI的某些部分将根据需要而改变,而有一部分在任何时候都是通用的。创建这种类型的动态GUI的最佳方式是什么?在.net中创建动态GUI的最佳方式是什么?

+0

Winforms? WPF? SilverLight的?另外,没有“C#.net”这样的东西 - 它被称为“C#”。 – 2011-03-26 05:16:24

我发现的最好的方法是使用WPF和MVVM模式。这是一个模糊的答案,但怜悯,这是一个模糊的问题。

具体技术将取决于您使用的GUI技术,正如其他人所指出的那样。没有具体的信息,可以做的最好的是 指定一个通用的过程。

通常,您将创建一个包含常用控件和内容的“主”表单,并且还包含一个可以添加特定内容的空白面板。

在执行程序的过程中,用户会做一些事情(点击一个按钮,从组合框中进行选择等),这将触发应用程序创建一个新的子表单并将其放入空白处如上所述。

这是相对容易的部分。困难的部分是主要形式和植入式儿童形式之间的协调。他们共享菜单或工具栏吗?孩子是否必须与父母或父母沟通?

为了提供更多帮助,我们需要更多关于您的UI框架选择的详细信息。

它完全取决于动态用户界面是什么。有很多方法可以解决这个问题。下面是一些例子给你一些想法:

如果它是真正动态的(例如数据驱动),因此每次生成UI都可能完全不同,那么一个非常简单的方法就是从数据创建控件(例如跟踪Y坐标,并且每次需要新控件时,在该Y位置创建一个适当的类型,然后将控件的大小(加上间隙)添加到Y)。这实质上是由Forms设计器生成的代码所做的,因此通过构建一些示例窗体并查看生成的代码很容易看到任何数量的示例。放置这些控件的好方法是将它们放在UI窗体中的专用Panel控件中 - 这样,只需移动面板即可在父窗体中的任何位置移动动态UI。

如果它只是“半动态的”,因为有一个预定义的用户界面的固定“池”,根据(比方说)当前的选择选择其中的一个,那么您可以构建一个用户控件类对于这些UI面板中的每一个,然后(a)以编程方式在主窗体中添加/删除它们,或者(b)将它们全部添加到设计器中并以编程方式将Visible = false或Visible = true设置为确保一次只有一个面板实际上对用户可见。

当然,您可以将这些“动态”面板嵌入到固定位置的UI中,以便您可以*混合两种类型的UI元素。