0

我决定将一些 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

4

1 回答 1

1

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

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

于 2012-05-08T08:02:21.323 回答