相关疑难解决方法(0)

软件渲染模式 - WPF

我有一个WPF用户控件,我需要强制渲染RenderMode.SoftwareOnly.由于我使用的是.NET 3.5,我不得不做类似的事情,

var hwndSource = PresentationSource.FromVisual(this) as HwndSource;
if (hwndSource != null)
{
    hwndSource.CompositionTarget.RenderMode = RenderMode.SoftwareOnly;        
}
Run Code Online (Sandbox Code Playgroud)

但这不适用于我的应用程序,WPF程序在少数几台机器上崩溃,关闭注册表级别的硬件加速似乎解决了这个问题.

上面的代码是在Loaded窗口的情况下编写的.如果我是正确的,Loaded事件发生在控件呈现后(MSDN).那么在这个事件中有上面的代码是否有意义?如果没有,哪个事件适合它?

此外,RenderMode视觉上的设置会影响它的孩子吗?或者我是否需要为每个子元素专门设置它?

任何帮助都会很棒!

.net c# wpf .net-3.5 hardware-acceleration

16
推荐指数
2
解决办法
2万
查看次数

UI停止在WPF应用程序中呈现

我有一个WPF应用程序,看起来很奇怪.运行一段时间后,UI停止渲染.它根本没有更新,更新的最后一个视图一直显示.鼠标悬停操作不会像通常那样触发复选框和其他项的标记.如果我最小化应用程序并再次恢复它,整个窗口变黑.这不是UI线程被占用的问题,应用程序仍然是响应.例如,如果我右键单击鼠标,则会出现上下文菜单,我可以像往常一样从中选择菜单项.如果该项目显示对话框,则会出现对话框并且表现正常,但底层UI仍未呈现.UI中的所有按钮都是可点击的,即使在UI变黑后它们不可见.将鼠标悬停在附有工具提示的项目上时,弹出工具提示.

当应用程序运行一段时间后,这种情况经常发生.

以前有人见过这种行为吗?什么可以导致它的想法?我该怎么调试呢?我不知道哪里开始.

编辑:当UI冻结时,我运行了Ants Performance Profiler,"%Processor Time"接近 - 有时高于 - 100%.

编辑:事实证明,每次我进入Windows锁定屏幕并再次返回时都会发生这种情况.我不知道为什么会发生这种情况,但它与自定义依赖项属性有关,该属性是为了对SetWindowLong,GetWindowLong和SetWindowPos进行p/invoke调用而实现的.依赖项属性按预期工作,除非从Windows锁定屏幕返回.不使用它是解决问题的"解决方案".

wpf user-interface rendering

7
推荐指数
1
解决办法
697
查看次数