WPF Tab Navigation In Children UserControl - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь управлять навигацией по моей вкладке. Я сделал небольшую программу для проверки, но я не получаю то, что хочу.

Я хочу вкладку в определенном порядке. И одна из вкладок фокусируется на пользовательском контроле. Как только я нахожусь в контроле пользователя, я хочу перейти в другой порядок. И затем, когда все пользовательское управление Tab будет сделано, вернитесь к моему основному элементу управления.

Поскольку мой код очень короткий, я вставлю все это.

Сначала мое главное окно.

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel KeyboardNavigation.TabNavigation="Local">
        <TextBox Text="0" KeyboardNavigation.TabIndex="0" />
        <TextBox Text="5" KeyboardNavigation.TabIndex="5" />
        <local:Page1 KeyboardNavigation.TabIndex="3"/>
        <TextBox Text="4" KeyboardNavigation.TabIndex="4" />
        <TextBox Text="1" KeyboardNavigation.TabIndex="1" />
        <TextBox Text="2" KeyboardNavigation.TabIndex="1" />
    </StackPanel>

</Window>

Затем Page1, который является пользовательским элементом управления, который вы видите с TabIndex = "3"

<UserControl x:Class="WpfApp1.Page1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:WpfApp1"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800">

    <StackPanel KeyboardNavigation.TabNavigation="Contained">
        <TextBox Text="Child 0" KeyboardNavigation.TabIndex="0" />
        <TextBox Text="Child 1" KeyboardNavigation.TabIndex="1" />
        <TextBox Text="Child 3" KeyboardNavigation.TabIndex="3" />
        <TextBox Text="Child 2" KeyboardNavigation.TabIndex="2" />
    </StackPanel>
</UserControl>

Что я получу в качестве заказа, когда вкладка будет

0 1 2 4 5 Ребенок0 Ребенок1 Ребенок2 Ребенок3

То, что я хочу, это.

0 1 2 Ребенок0 Ребенок1 Ребенок2 Ребенок3 4 5

Есть ли способ достичь этого? Я пытаюсь изменить TabNavigation на Local Container ect ... И не нашел способа заставить его работать.

1 Ответ

1 голос
/ 14 мая 2019

Удалите KeyboardNavigation.TabNavigation="Contained" из UserControl и попробуйте это:

<StackPanel>
    <TextBox Text="0" KeyboardNavigation.TabIndex="0" />
    <TextBox Text="5" KeyboardNavigation.TabIndex="5" />
    <local:Page1 KeyboardNavigation.TabIndex="3" KeyboardNavigation.TabNavigation="Local"/>
    <TextBox Text="4" KeyboardNavigation.TabIndex="4" />
    <TextBox Text="1" KeyboardNavigation.TabIndex="1" />
    <TextBox Text="2" KeyboardNavigation.TabIndex="2" />
</StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...