如何检查AutomationElement是否具有焦点?

时间:2015-08-17 05:41:34

标签: c# wpf .net-4.0 user-controls ui-automation

我在UI Automation的帮助下进行集成测试。我需要检查用户控件是否具有焦点(IsFocused = true)。可能吗 ?我尝试使用AutomationElement.FocusedElement,但据我检查它返回不同的控件(可能在我的应用程序之外)。

我的控制:

<UserControl GotFocus="UserControl_GotFocus" Focusable="True">
<DockPanel>
    <Button DockPanel.Dock="Right" Content=">" IsTabStop="False" Focusable="False" Click="TextButton_Click" />
    <TextBox Text="{Binding Text}" x:Name="textBox" /> 
</DockPanel>

代码背后的代码:

    private void UserControl_GotFocus(object sender, RoutedEventArgs e)
    {
        textBox.Focus();
        Keyboard.Focus(textBox);
    }

1 个答案:

答案 0 :(得分:0)

您可以获得与您关注的控件关联的AutomationElement,然后获取AutomationElement.FocusedElement并进行比较。如果它们是相同的,那么它就是重点。

此外,AutomationElement.Current应具有HasKeyboardFocus属性。你可以看看它是否能为你提供所需的信息。