Подтвердить что ты не робот

Как TAB через TextBoxes в ListView

Хорошо У меня есть ListView, у которого есть 2 GridViewColumns, один из которых содержит число и один, содержащий TextBox Моя проблема в том, что я хочу иметь возможность Tab через все текстовые поля, которые у меня есть в GridViewColumn. С прилагаемой Property KeyboardNavigation.TabNavigation я достигаю почти того, чего хочу.
Чего я достигаю:
первая TAB - целая первая функция ListViewItem

второй TAB - первый текстовый блок сфокусирован
третий TAB - целая секунда, с которой работает ListViewItem
четвертая TAB - вторая фокусировка TextBox

Что я хочу - первая TAB - первая ориентация TextBox
второй TAB - второй фокус TextBox

    <ListView KeyboardNavigation.TabNavigation="Continue" Name="TheLabelListView" >
                            <ListView.ItemContainerStyle >
                                    <EventSetter Event="Selected" Handler="ItemSelected" /></Style>
                            </ListView.ItemContainerStyle>
                            <ListView.View>
                                <GridView x:Name="GridViewSmall"  >
                                    <GridViewColumn  Header="#" Width="20"  DisplayMemberBinding="{Binding SelectorIndexNumber}" />
                                    <GridViewColumn  Header="Selector" Width="175">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <TextBox Name="SelectorTextBox"  Text="{Binding SelectorName}"  />                                                    
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                </GridView>
                            </ListView.View>
                        </ListView>

Этот код мне дал H.B., Он должен выполняться, когда выбран ListViewItem и находит TextBox и фокусирует его. Так или иначе, он все равно не выбирает TextBox каждый раз, когда этот метод выполняется. Bool TextBoxgotFocus всегда прав.

 private void ItemSelected(object sender, RoutedEventArgs e)
    {
        var item = sender as ListViewItem;
        TextBox h = (FindNamedChild(item, "SelectorTextBox") as TextBox);
        bool TextBoxgotFocus = h.Focus();
    }

    public static object FindNamedChild(DependencyObject container, string name)
    {
        if (container is FrameworkElement)
        {
            if ((container as FrameworkElement).Name == name) return container;
        }
        var ccount = VisualTreeHelper.GetChildrenCount(container);
        for (int i = 0; i < ccount; i++)
        {
            var child = VisualTreeHelper.GetChild(container, i);
            var target = FindNamedChild(child, name);
            if (target != null)
            {
                return target;
            }
        }
        return null;
    }
4b9b3361

Ответ 1

Проблема в том, что для каждого элемента в представлении списка есть две вкладки: сам элемент и текстовое поле. Вы хотите установить KeyboardNavigation.IsTabStop на false для самих элементов. Просто установите это в свой стиль.

<ListView KeyboardNavigation.TabNavigation="Continue" Name="TheLabelListView">
    <ListView.ItemContainerStyle>
        <Style>
            <Setter Property="KeyboardNavigation.IsTabStop" Value="False" />
        </Style>
    </ListView.ItemContainerStyle>

    <!-- etc... -->
</ListView>