C#学习教程:在程序运行期间编译/执行XAML分享


在程序运行期间编译/执行XAML

我想创建一个WPF应用程序,它从数据库中检索XAML代码并显示检索到的代码。

让我们说数据库返回以下代码:

  

如何在运行时执行此代码(或者可能只是mainGrid的内容)?

XamlReader类专门用于此目的。 使用其Load方法动态加载xaml。

编辑 – 这里的链接可能是您感兴趣的。

这就是我解决问题的方法:

我有3个文件MainWindow.xaml,MainWindow.xaml.cs和wpftest.csproj。

MainWindow.xaml:

      

MainWindow.xaml.cs

 namespace wpftest { using System.Windows; ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { MessageBox.Show("Hello world", "does it work?"); } } } 

wpftest.csproj (注意:这个文件非常大,并且大部分内容都不是必需的。您可以按照本指南创建更简化的解决方案: 演练:从Scratch创建MSBuild项目文件 )

     Debug AnyCPU {E3FBAE41-AF7E-4C7E-A69E-ADAEAEE76FA2} Library Properties wpftest wpftest v4.5 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4   AnyCPU true full false binDebug DEBUG;TRACE prompt 4   AnyCPU pdbonly true binRelease TRACE prompt 4           4.0        MSBuild:Compile Designer   MainWindow.xaml Code     

解:

以下代码片段将编译代码,创建dll文件并通过reflection使用创建的dll。 这在应用程序运行时期间(全部)发生。

特别感谢doug这个stackoverflow问题

上述就是C#学习教程:在程序运行期间编译/执行XAML分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

  private void TestCase4_OnClick(object sender, RoutedEventArgs e) { var globalProperties = new Dictionary(); var buildRequest = new BuildRequestData(@"C:Usersjbuwpftestwpftest.csproj", globalProperties, null, new string[] { "Build" }, null); var pc = new ProjectCollection(); var result = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), buildRequest); Assembly assembly = Assembly.LoadFrom(@"C:UsersjbuwpftestbinDebugwpftest.dll"); var instance = assembly.CreateInstance("wpftest.MainWindow") as Window; if (instance != null) { instance.Show(); } } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031856.html

发表评论

邮箱地址不会被公开。 必填项已用*标注