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