从控制台应用程序创建XAML

时间:2012-05-08 07:54:22

标签: .net wpf

我决定将我的一些UI生成卸载到我的后端,并将其流式传输到客户端。这将允许我在不重新部署客户端的情况下进行一些UI更改。

应该是直截了当的。在服务器端:

  string controlToStream = XamlWriter.Save(rootControl);

并在客户端:

  var stringReader = new StringReader(value);
  var xmlTextReader = new XmlTextReader(stringReader);
  var control = XamlReader.Load(xmlTextReader);

但是如何在服务器上访问WPF而不在链中引入完整的WPF应用程序?服务器代码是典型的RPC类型代码块,每次请求进入时都会执行。有没有办法在控制台应用程序中轻量级访问XAML /控件创建?

谢谢!

解决方案更新以供将来参考:

  1. 在控制台应用中添加对WPF dll(PresentationCore,Windowsbase,PresentationFramework,System.Xaml)的引用

  2. 确保只从STA线程调用它们。 ParallelExtensionsExtras中的StaTaskScheduler派上用场:http://blogs.msdn.com/b/pfxteam/archive/2010/04/07/9990421.aspx

1 个答案:

答案 0 :(得分:1)

我不确定您认为“轻量级”到底是什么,但您可以从控制台应用程序访问所有WPF库。

如果由于某种原因不想使用它们,可以将XAML视为普通XML,并仅使用XML库来生成它。虽然这很可能会更多的工作。