在.NET中使用DSL创建动态UI

时间:2011-10-14 14:01:04

标签: .net wpf dsl

我正在为客户开发WPF应用程序。应用程序需要在生产运行开始时提示用户填充许多字段。提示用户输入的数据取决于与生产运行相关联的产品类型。因此,例如,产品A可能要求用户输入到期号码,批号,而产品B可能要求用户仅输入生产日期。

我需要动态创建UI并显示字段名称,输入控件(文本框,列表框,复选框等)。

系统需要灵活,并且需要一种允许用户“创建”动态UI布局的机制。

我正在寻找各种选项,例如:

  1. XML声明用户想要的ui结构。然后,应用程序将处理XML并为各种XML元素创建适当的ui控件

  2. 自定义DSL,允许用户输入以下内容:

    “为字段LOT NUMBER创建文本框”

    与xml方法一样,应用程序将保存上述内容并将其分配给产品并将其保存在数据库中。在生产运行开始期间,应用程序动态创建UI。

  3. 最初,用户将手动编辑这些文件并将其分配给产品。最终我们计划有一个图形前端,用于设计具有拖放支持的UI。

    我对DSL没有多少经验。只是想知道上述是否适用于DSL,或者我是否应采取完全不同的方法。

1 个答案:

答案 0 :(得分:1)

Microsoft提供Visualization and Modeling SDK,以前称为DSL Toolkit。

这包括用于创建DSL的图形设计器。设计师的输出是

  1. DSL设计器(默认为图形),可用于从Visual Studio内部创建模型实例。
  2. 用于在运行时操作模型的API
  3. 从模型实例生成基于文本的工件的能力
  4. 例如,您将为特定产品类型创建DSL实例,这可能表示产品类型需要输入部件号,颜色和到期日期。保存模型实例时,它会自动生成用户控件的.xaml文件,其中包含部件号的文本框,颜色的颜色选择器和到期日期的日期选择器。