0

視覚的な外観の順序に反するようにタブ インデックスを設定しようとしています。つまり、ウィンドウの上部に表示されるボタンは、特にフォーカスしないように設定すると、最初にフォーカスされます。

コントロールの構造は次のとおりです。

DocPanel
  |
  |---- DockPanel
  |       |----- Button
  |       |----- Button
  |       |----- Button
  |
  |---- Grid
          |----- Canvas
          |---- TabControl
                    |------ TextBox
                    |------ ComboBox

必要なタブ オーダー。

  1. キャンバス
  2. テキストボックス
  3. コンボボックス
  4. 3つのボタン

現在の注文は;

  1. 3つのボタン
  2. テキストボックス、
  3. コンボボックス
  4. キャンバス。

KeyboardNavigation.TabNavigation="Local"外側のDockPanelに設定してみました。

次に、必要な数に設定TabNavigation.TabIndexTabIndexますが、機能しません。

コントロールがウィンドウの上部に視覚的に表示される場合、コントロールが下部に表示された後、タブ インデックスをフォーカスに変更することはできませんか?

ここに私のXAMLがあります:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    FocusManager.FocusedElement="{Binding ElementName=pic}"
    Title="Window1" Height="504" Width="929">
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" KeyboardNavigation.TabNavigation="Local">
    <DockPanel DockPanel.Dock="Top" Height="30">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Content="Save and Close" KeyboardNavigation.TabIndex="4" TabIndex="4"/>
            <Button Content="Forward" KeyboardNavigation.TabIndex="5" TabIndex="5" />
            <Button Content="Delete" KeyboardNavigation.TabIndex="6" TabIndex="6" />
        </StackPanel>
    </DockPanel>
    <Grid DockPanel.Dock="Bottom">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="50"/>
            <ColumnDefinition MinWidth="500"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Border BorderBrush="Aqua" BorderThickness="2" >
            <Canvas x:Name="pic" Grid.Column="0" Grid.Row="0" KeyboardNavigation.TabIndex="1" KeyboardNavigation.IsTabStop="True" Focusable="True"  >
                <Canvas.Background>
                    <ImageBrush ImageSource="bookcover.jpg" Stretch="Fill"/>
                </Canvas.Background>
            </Canvas>
        </Border>
        <TabControl x:Name="tabs" Grid.Column="2" Grid.Row="0">
            <TabItem Header="Fax Details" IsTabStop="False">
                <StackPanel>
                <TextBox  Name="fdCustomerFileNumber" HorizontalAlignment="Left" Height="30" KeyboardNavigation.TabIndex="2" TabIndex="2" />

                <ComboBox TabIndex="3" KeyboardNavigation.TabIndex="3" Width="165"  HorizontalAlignment="Left" Height="22" VerticalAlignment="Center" Name="fdDocType" IsEditable="False" />
                </StackPanel>
            </TabItem>
        </TabControl>
    </Grid>

</DockPanel>

4

1 に答える 1

0

XAML を次のように設定できます。

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    FocusManager.FocusedElement="{Binding ElementName=pic}"
    Title="Window1" Height="504" Width="929">
    <DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <DockPanel DockPanel.Dock="Top" Height="30">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                <Button Content="Save and Close" TabIndex="4"/>
                <Button Content="Forward" TabIndex="5" />
                <Button Content="Delete" TabIndex="6" />
            </StackPanel>
        </DockPanel>
        <Grid DockPanel.Dock="Bottom">
            <Grid.ColumnDefinitions>
                <ColumnDefinition MinWidth="50"/>
                <ColumnDefinition MinWidth="500"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Border BorderBrush="Aqua" BorderThickness="2" >
                <Canvas x:Name="pic" Grid.Column="0" Grid.Row="0" Focusable="True"  >
                    <Canvas.Background>
                        <ImageBrush ImageSource="bookcover.jpg" Stretch="Fill"/>
                    </Canvas.Background>
                </Canvas>
            </Border>
            <TabControl x:Name="tabs" Grid.Column="2" Grid.Row="0">
                <TabItem Header="Fax Details" IsTabStop="False">
                    <StackPanel>
                        <TextBox  Name="fdCustomerFileNumber" HorizontalAlignment="Left" Height="30" TabIndex="2" />
                        <ComboBox TabIndex="3" Width="165"  HorizontalAlignment="Left" Height="22" VerticalAlignment="Center" Name="fdDocType" IsEditable="False" />
                    </StackPanel>
                </TabItem>
            </TabControl>
        </Grid>
    </DockPanel>
</Window>

次に、コード ビハインドの New Sub で、キャンバスにフォーカスを設定するだけです。

pic.Focus;
于 2013-02-25T15:24:51.863 に答える