首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Checkbox失去焦点,FocusManager.IsFocusScope=为“True”

Checkbox失去焦点,FocusManager.IsFocusScope=为“True”
EN

Stack Overflow用户
提问于 2013-01-11 17:35:49
回答 1查看 2.3K关注 0票数 4

我发现我的CheckBox和它的焦点/Tab键顺序有奇怪的行为。

首先是一些“工作”代码:

代码语言:javascript
复制
<Grid>    
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Button Grid.Row="0" Width="100" Height="25"/>
    <TabControl Grid.Row="1" >
        <!--TabItem Header="tabItem1" Name="tabItem1"-->
        <TabItem Header="tabItem1" Name="tabItem1" FocusManager.IsFocusScope="True">
            <ScrollViewer>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition />
                        <RowDefinition />
                        <RowDefinition />
                    </Grid.RowDefinitions>

                    <TextBox Grid.Row="0" />
                    <TextBox Grid.Row="1"/>
                    <CheckBox Grid.Row="2" Content="Test"  />
                    <TextBox Grid.Row="3"/>
                </Grid>
            </ScrollViewer>
        </TabItem>
    </TabControl>
</Grid>

如果您尝试这样做,Tab键顺序可以很好地工作-只要您不检查CheckBox。如果我检查CheckBox,它将失去焦点,下一次按tab键将焦点设置为按钮。

如果我删除FocusManager.IsFocusScope="True",一切都会正常工作。

我的问题是这个行为是想要的还是一个bug?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-11 19:52:41

这种行为在某种程度上是意料之中的。为了修复它,您可以在窗口上为GotFocus添加一个处理程序。

假设您的复选框名为chkBox,如下所示:

代码语言:javascript
复制
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
    base.OnGotKeyboardFocus(e);

     if (e.Source == chkBox)
         FocusManager.SetFocusedElement(this, chkBox); 

}

这个问题和一些类似的问题在this msdn thread中有更详细的讨论。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14275235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档