1

我在页面 OnNavigatedTo() 事件中有此代码:

if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
    textBoxGroupName.Focus(FocusState.Programmatic);
}

...但是当页面显示时 textBoxGroupName 没有焦点。为什么不?

4

2 回答 2

4

OnNavigatedTo发生在页面生命周期的早期,以便将焦点设置为工作。Loaded您应该在事件中调用您的代码:

private void MainPage_OnLoaded(object sender, RoutedEventArgs e)
{
    if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
    {
        textBoxGroupName.Focus(FocusState.Programmatic);
    }
}

当然,您需要在.xaml文件中设置处理程序(我省略了Page元素中的其他属性:

<Page
    Loaded="MainPage_OnLoaded">
于 2013-01-14T05:51:07.657 回答
2

只有 GroupBox 控件中包含的控件可以被选择或接收焦点。好像您没有正确使用 GroupBox。

来自MSDN

无法选择完整的 GroupBox 本身或接收焦点。有关此控件如何响应 Focus 和 Select 方法的详细信息,请参阅以下控件成员:CanFocus、CanSelect、Focused、ContainsFocus、Focus、Select。

暗示:

您可能想使用Controls属性来访问子控件:

if (string.IsNullOrWhiteSpace(textBoxGroupName.Text))
{
    var child_TextBox = textBoxGroupName.Controls["myTextBox"]
    if(child_TextBox.CanFocus)
        child_TextBox.Focus(FocusState.Programmatic);
}
于 2013-01-14T05:45:35.107 回答