1

WPF で動的に読み込まれるコントロールのタブ オーダーに関して質問があります。

私はリストボックスを次のように持っています:

<ListBox ItemsSource="{Binding Path=MyData,Mode=TwoWay}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel></StackPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

ListItem としてスタックパネルに TextBlock-Textbox ペア (名前と値のペア) をいくつか追加します。タブを押すと、スキップされたすべてのアイテムが残り、ListBox アイテムから抜け出します。

解決策: ただし、次を ListBox に追加すると、すべて正常に動作します。

KeyboardNavigation.TabNavigation="Local"

ListBox の代わりに ItemsControl を使用していれば、ローカル ナビゲーションを使用する必要はなく、OOTB で問題なく動作します。私のItemsControlは次のようになります:

<ItemsControl ItemsSource="{Binding Path=MyData,Mode=TwoWay}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel></StackPanel>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

質問: これら 2 つの動作が異なるのはなぜですか?

ありがとう、RDV

<<<<<<<<<<<<<< 完全な XAML コード<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<

<ItemsControl HorizontalContentAlignment="Center"
              HorizontalAlignment="Center"
              ItemsSource="{Binding Mydata}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
           <StackPanel/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
               <Grid.ColumnDefinitions>
                 <ColumnDefinition/>
                 <ColumnDefinition/>
               </Grid.ColumnDefinitions>

               <Border Background="LightBlue">
                  <TextBlock Grid.Column="0"
                             HorizontalAlignment="Center" 
                             VerticalAlignment="Center"
                             Text="{Binding Name}"/>
               </Border>
               <TextBox  Grid.Column="1"
                         Text="{Binding Value}"
                         HorizontalAlignment="Stretch"
                         VerticalContentAlignment="Center"
                         HorizontalContentAlignment="Center"/>
             </Grid>
            </DataTemplate>
           </ItemsControl.ItemTemplate>
          </ItemsControl>

ViewModel から MyData 変数にデータを追加します。

タブ操作の変更を確認するには、ItemsControl を ListBox に変更するだけです。ListBox の項目をタブで移動できない場合 (私が直面している問題)、ListBox コントロールに追加します。

 KeyboardNavigation.TabNavigation="Local"

ありがとう、RDV

4

0 に答える 0