Древовидный элемент теряет выделение при потере фокуса - PullRequest
3 голосов
/ 17 июня 2009

Я заметил это в приложении, над которым я сейчас работаю, поэтому я создал простое тестовое приложение для демонстрации. Ниже мое окно и обработчик событий для элементов дерева. Если развернуть родительские узлы «Один» или «Два» и щелкнуть один из дочерних узлов, выбранный дочерний узел не будет отображаться как выбранный после вызова метода Focus () в текстовом поле. Вместо этого выбор попадает на родительский узел. Кто-нибудь есть какие-либо идеи, как преодолеть это, и выбор остается с выбранным дочерним узлом? Спасибо.

<Window 
x:Class="DockingSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
WindowState="Maximized"
>
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <TreeView Margin="6">
        <TreeViewItem Header="One">
            <TreeViewItem Header="One" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Two" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Three" Selected="TreeViewItem_Selected" />
        </TreeViewItem>
        <TreeViewItem Header="Two">
            <TreeViewItem Header="One" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Two" Selected="TreeViewItem_Selected" />
            <TreeViewItem Header="Three" Selected="TreeViewItem_Selected" />
        </TreeViewItem>
    </TreeView>

    <TextBox Grid.Column="1" x:Name="textbox" />
</Grid>

private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
    {
        textbox.Focus();
    }

С вышеприведенным окном и обработчиком события «Выбрано»

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Дайте время TreeView завершить свои события, выполнив вместо этого:

Dispatcher.BeginInvoke (DispatcherPriority.Input, новое действие (() => textbox.Focus ()));

0 голосов
/ 10 апреля 2014

Установите для TreeView.HideSelection значение false.

...