我尚未阅读/发现有关通过远程连接查看 WPF 应用程序的任何已知问题。但是如果你想一想how远程连接工作我想对这个问题进行一些猜测,甚至可能是一个解决方案。
当您安装任何远程桌面软件时,您实际上做了两件事:设置中继器来中继输入命令并添加显示适配器它充当帧服务器,即,它不是将屏幕内容输出到监视器,而是通过网络发送信息。
如您所知,WPF 利用 DirectX 来加速其渲染(GPU 限制),但不幸的是,所有显卡加速都无法通过远程桌面连接进行工作。
我相信在您的具体情况下发生的情况是,当 WPF 尝试绘制上下文菜单时,它不会回退到使用其软件渲染管道 - 也许是因为上下文菜单是Popup
并在一个单独的视觉树中。
值得尝试的事情是force您的 WPF 应用程序使用软件渲染。
void OnLoaded(object sender, EventArgs e)
{
HwndSource hwndSource = (HwndSource)PresentationSource.FromVisual(this);
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
如果事实证明确实如此,您有两个选择:强制 WPF 使用软件渲染管道或尝试部署高性能远程桌面访问软件 http://h20331.www2.hp.com/Hpsub/cache/286504-0-0-225-121.html惠普的解决方案。
HTH,
参考
- 有关解决 WPF 中图形问题的 Microsoft 指南。 http://support.microsoft.com/kb/963021
- WPF 中的硬件加速 http://beta.blogs.microsoft.co.il/blogs/janiv/archive/2009/06/07/hardware-acceleration-in-wpf.aspx
- 惠普远程图形软件 http://h20331.www2.hp.com/Hpsub/cache/286504-0-0-225-121.html
Update:对于其他搜索并找到此答案的人,您需要更改 VNC 客户端设置以启用阿尔法混合。正如 @mcdrewski 所指出的,默认情况下 VNC 不会检测/渲染 alpha 混合窗口。启用 Alpha 混合会产生一定的成本,并且您会注意到 VNC 客户端有一点延迟。