我正在尝试对WPF控件进行单元测试,并且需要模拟按键按下。我已经看到了一个可能的解决方案here,但是当我尝试传入PresentationSource时,我不断获取一个空值(从PresentationSource.FromVisual()或PresentationSource.FromDependencyObject()),该值会触发异常。
我的问题是如何获得可以在单元测试中使用的非null PresentationSource?
最佳答案
您可以像这样扩展PresentationSource类:
public class FakePresentationSource : PresentationSource
{
protected override CompositionTarget GetCompositionTargetCore()
{
return null;
}
public override Visual RootVisual { get; set; }
public override bool IsDisposed { get { return false; } }
}
并像这样使用它:
var uiElement = new UIElement();
uiElement.RaiseEvent(new KeyEventArgs(Keyboard.PrimaryDevice, new FakePresentationSource(), 0, Key.Delete)
{
RoutedEvent = UIElement.KeyDownEvent
});