我有一个WPF用户控件,需要强制在RenderMode.SoftwareOnly
下进行渲染。由于我正在使用.NET 3.5,所以我必须做类似这样的事情:
var hwndSource = PresentationSource.FromVisual(this) as HwndSource;
if (hwndSource != null)
{
hwndSource.CompositionTarget.RenderMode = RenderMode.SoftwareOnly;
}
但是这在我的应用程序中不起作用,WPF程序在一些机器上崩溃,关闭注册表级别的硬件加速似乎可以解决问题。
上述代码是写在窗口的Loaded
事件中的。如果我没错的话,Loaded
事件发生在控件被渲染之后(MSDN)。所以把上面的代码放在这个事件里是否有意义?如果没有,那么哪个事件比较合适呢?
同时,设置视觉元素的RenderMode
属性会影响其子元素吗?还是我需要为每个子元素单独设置呢?