C# UnitTest中的Keyboard.FocusedElement为空
我试图通过以下方式设置wpf控件的焦点:C# UnitTest中的Keyboard.FocusedElement为空,c#,wpf,unit-testing,C#,Wpf,Unit Testing,我试图通过以下方式设置wpf控件的焦点: [TestClass] [TestFixture, Apartment(ApartmentState.STA)] public class OnEnter_MoveFocus_Test { [TestInitialize] public void TestInitialize() { if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA
[TestClass]
[TestFixture, Apartment(ApartmentState.STA)]
public class OnEnter_MoveFocus_Test
{
[TestInitialize]
public void TestInitialize()
{
if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
{
throw new ThreadStateException("The current threads apartment state is not STA");
}
}
[TestMethod]
public void TestMoveFocus()
{
TextBox TextBox1 = new TextBox() { Name = nameof(TextBox1), Focusable=true };
var result = TextBox1.Focus(); //results in false
Keyboard.Focus(TextBox1);
}
}
TextBox1.Focus()
返回false(显然TextBox1
可聚焦并启用),并且在使用键盘时返回Focus(TextBox1)
键盘。FocusedElement仍为null
如何解决此问题?您创建的
文本框不属于任何可视树,无法由焦点管理器管理。所以很明显这是行不通的。您必须首先将文本框添加到可见的容器中。您不能在典型的单元测试中执行这些类型的UI测试。查看TestStack中的白色框架(有一个用于此的组),了解执行此类测试的方法。您创建的TextBox
不属于任何可视树,无法由FocusManager
管理。所以很明显这是行不通的。您必须首先将文本框添加到可见的容器中。您不能在典型的单元测试中执行这些类型的UI测试。看一下TestStack中的白色框架(有一个组用于此),了解执行此类测试的方法。