TreeView中存在隐藏项时键盘导航失败

时间:2010-03-01 22:09:14

标签: wpf wpf-controls

所以我有一个类似下面的TreeView,隐藏了某些项目。如果我尝试使用箭头键浏览树,我会卡在“折叠”项目周围的项目中。亲自尝试一下。


<Window x:Class="Example.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TreeViewBug" Height="300" Width="300">
    <Grid>
        <TreeView>
            <TreeViewItem Header="a." />
            <TreeViewItem Header="b" Visibility="Collapsed" />
            <TreeViewItem Header="c." />
            <TreeViewItem Header="d" />
            <TreeViewItem Header="e." />
            <TreeViewItem Header="f" Visibility="Collapsed"/>
            <TreeViewItem Header="g." />
            <TreeViewItem Header="h" />
        </TreeView>
    </Grid>
</Window>

似乎没有其他人发布过这个问题(或者是关于它的博客),所以我发布它是希望得到一个非hacky解决方案。所以这是我的问题:

如何修复此错误?

我计划扩展默认的TreeView以跳过将Visibility设置为Hidden / Collapsed或IsEnabled设置为false的项目。有没有其他人在此之前遇到过这个并找到一个好的解决方案?

2 个答案:

答案 0 :(得分:5)

我不明白为什么会这样。 我可以通过添加:

来修复它
 IsEnabled="False"

到折叠的项目。然后,导航按照您的预期工作。

答案 1 :(得分:3)

这是一个有效的解决方案:禁用您隐藏的项目。如果禁用该项,键盘导航将按预期工作。因此,每当您设置项目的可见性时,在项目不可见时将IsEnabled设置为false。

尝试问题中的代码,但将IsEnabled =“false”添加到所有折叠的项目中。它应该工作。