Навигация с клавиатуры не работает, если в TreeView есть скрытые элементы - PullRequest
2 голосов
/ 02 марта 2010

Итак, у меня есть 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>

Никто другой, похоже, не опубликовал этот вопрос (и не написал об этом в блоге), и поэтому я публикую его в надежде получить нехакерское решение этого вопроса. Итак, вот мой вопрос:

Как мне исправить эту ошибку?

Я планирую расширить TreeView по умолчанию, чтобы пропустить элементы с Visibility, установленным в Hidden / Collapsed или IsEnabled, установленным в false. Кто-нибудь еще сталкивался с этим раньше и придумал хорошее решение?

Ответы [ 2 ]

5 голосов
/ 02 марта 2010

Я не понимаю, почему это происходит. Я мог бы это исправить, добавив:

 IsEnabled="False"

к свернутым предметам. Тогда навигация работает так, как вы ожидаете.

3 голосов
/ 02 марта 2010

Вот решение, которое работает: отключите элемент, который вы скрываете. Если элемент отключен, навигация с помощью клавиатуры работает как положено. Поэтому, когда вы устанавливаете видимость элемента, присвойте IsEnabled значение false, если элемент не виден.

Попробуйте код в вопросе, но добавьте IsEnabled = "false" ко всем свернутым элементам. Это должно работать.

...