【问题标题】:How could you enable a WPF application to create user controls on the fly?如何让 WPF 应用程序动态创建用户控件?
【发布时间】:2010-12-06 15:42:57
【问题描述】:

您如何创建一个可以搜索目录、以配对 .xaml / .xaml.cs 文件形式查找用户控件并即时编译/执行这些文件的应用程序?这可能吗?是否有 .exec() 或 .compile() 类可以做到这一点?

基本上我想要做的是让 WPF 应用程序正在运行,并通过让用户填写描述他想要的页面/功能类型的表单,应用程序可以生成 XAML 和代码隐藏文件,然后无需重新编译应用程序即可立即使用。

【问题讨论】:

    标签: c# wpf xaml code-generation


    【解决方案1】:

    我假设这是为了更改已知应用程序上的 UI 的行为,而不是在另一个应用程序中使用 XAML/CS 组件生成器 - 毕竟已经有应用程序这样做 - Expression Blend 有人吗?

    你真的需要重新编译底层的 CS 吗?据我所知,您要做的就是改变应用程序和 UI 的明显行为和外观。这可以通过 xaml 中的命令绑定和组件的样式来实现。

    现实情况是,为了执行您需要的功能,您将为用户提供有限的行为选择。您需要确定什么是应用程序以及什么是 UI。

    应用程序行为由固定命令控制(它们可以接受参数来改变行为)。

    UI 行为(外观、动画等)包含在 xaml.xml 中。如果应用程序在浏览器窗口中运行,您可以根据需要自动生成所需的 xml,并将其链接到底层应用程序。命令并允许浏览器为您执行新行为。

    【讨论】:

      【解决方案2】:

      这是个好主意吗?我可以看到一些问题。

      1. 背后的代码如何“知道”如何与应用程序的其余部分进行交互
      2. 安全?您将允许某人代表主应用程序进行系统 API 调用
      3. 应用域???

      而是使用 ItemsControls 和 DataTemplates 构建表单。在用户在表单中指定他想要的功能的表单中,无论如何您都会向他展示“构建块”列表。使每个“构建块”成为 ViewModel,并将每个 ViewModel 与 DataTemplate 'UserControl' 相关联。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-13
        相关资源
        最近更新 更多