我决定将一些 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/控件创建的轻量级访问?
谢谢!
解决方案更新以供将来参考:
在控制台应用程序中添加对 WPF dll(在我的情况下为 PresentationCore、Windowsbase、PresentationFramework、System.Xaml)的引用
确保只从 STA 线程调用它们。ParallelExtensionsExtras 的 StaTaskScheduler 派上用场:http: //blogs.msdn.com/b/pfxteam/archive/2010/04/07/9990421.aspx