KeyboardNavigation.TabNavigation = "Once" на панели инструментов не теряет фокус, если все элементы не содержатся в другом контейнере - PullRequest
0 голосов
/ 30 марта 2012

В XAML ниже первая панель инструментов (Панель инструментов 1 ниже) не теряет фокус и пересекает все элементы даже с установленным KeyboardNavigation.TabNavigation = "Once".Единственный способ заставить его работать, это поместить все элементы панели инструментов в другой контейнер, такой как панель стека или сетка (Панель инструментов 2 ниже).Однако функция переполнения не работает должным образом.Когда ширина уменьшается, переполняется весь внутренний контейнер, а не отдельные элементы.

Мое требование - выходить из панели инструментов после первого элемента (для оставшихся элементов пользователь будет использовать клавиши со стрелками), не теряя при этом функции переполнения отдельных элементов.

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="600" Width="525">
<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="50" />
    <RowDefinition Height="50" />
    <RowDefinition Height="100" />
    <RowDefinition Height="50" />
    <RowDefinition Height="100" />
    <RowDefinition Height="50" />
  </Grid.RowDefinitions>
    <TextBox Grid.Row="0" Text="First" Width="600"></TextBox>
    <TextBox Grid.Row="1" Text="Second" Width="600"></TextBox>

  <DockPanel LastChildFill="True" Grid.Row="2" Background="Red" >
    <ToolBar x:Name="Toolbar1" DockPanel.Dock="Top" 
      VerticalAlignment="Top" HorizontalAlignment="Stretch" Height="40" BandIndex="1" Band="1"
           KeyboardNavigation.TabNavigation="Once"  >
        <Button Background="Red" Content="1" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded" />
        <Button Background="Red" Content="2" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded" />
        <Button Background="Red" Content="3" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded" />
        <Button Background="Red" Content="4" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded" />
        <Button Background="Red" Content="5" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded" />
    </ToolBar>
    <TextBox DockPanel.Dock="Bottom"  Text="I'm first Rich Text Box, My toolbar is not in a inner container." Height="50" Width="600"></TextBox>
  </DockPanel>      

  <TextBox Grid.Row="3" Text="Third" Width="600"></TextBox>

  <DockPanel LastChildFill="True" Grid.Row="4" Background="Green">
    <ToolBar x:Name="Toolbar2" DockPanel.Dock="Top"
      VerticalAlignment="Top" HorizontalAlignment="Stretch" Height="40" BandIndex="1" Band="1"
           KeyboardNavigation.TabNavigation="Once"  >
      <StackPanel Orientation="Horizontal" KeyboardNavigation.TabNavigation="Once" >
        <Button Background="Green" Content="1" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded" />
        <Button Background="Green" Content="2" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded"/>
        <Button Background="Green" Content="3" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded"/>
        <Button Background="Green" Content="4" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded"/>
        <Button Background="Green" Content="5" Height="28" Width="28"  ToolBar.OverflowMode="AsNeeded"/>
      </StackPanel>
    </ToolBar>
    <TextBox DockPanel.Dock="Bottom"  Text="I'm second Rich Text Box, My toolbar is in a inner container." Height="50" Width="600"></TextBox>
  </DockPanel>

  <TextBox Grid.Row="5" Text="Fourth" Width="600"></TextBox>

</Grid>

1 Ответ

0 голосов
/ 13 апреля 2012

Как я понял, вам следует отключить FocusManager.IsFocusScope прикрепленное свойство для вашего ToolBar1, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...