0

タブが行の各項目を通過し、これが各行を通過するようにします。しかし実際には、列内のすべての項目を列ごとに調べます。

DataTemplateには、2つのコンボボックス(たとえば、cb1とcb1)と1つのTextBox(tb)があります。実際のタブの順序は次のとおりです。

Row0.cb1、Row1.cb1 ... Row0.cb2、Row1.cb2 ... Row0.tb、Row1.tb..。

しかし、私が欲しいのは:

Row0.cb1、Row0.cb2、Row0.tb、Row1.cb1、Row1.cb2、Row1.tb..。

                            <ItemsControl ItemsSource="{Binding}" Name="myItemsControl">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="3*"/>
                                                <ColumnDefinition Width="*"/>
                                                <ColumnDefinition Width="Auto"/>
                                            </Grid.ColumnDefinitions>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto"/>
                                            </Grid.RowDefinitions>
                                            <ComboBox Grid.Column="0" ItemsSource="{Binding Source={StaticResource SomeItems}}" IsSynchronizedWithCurrentItem="False" SelectedItem="{Binding Path=SomeValue, Mode=TwoWay}" DisplayMemberPath="Name" TabIndex="20"/>
                                            <ComboBox Grid.Column="1" ItemsSource="{Binding Source={StaticResource SomeOtherItems}}" IsSynchronizedWithCurrentItem="False" SelectedItem="{Binding Path=SomeOtherValue, Mode=TwoWay}" DisplayMemberPath="Value" TabIndex="21"/>
                                            <TextBox HorizontalContentAlignment="Stretch" Grid.Column="2" TabIndex="22" LostKeyboardFocus="TextBox_FormatAfterLostFocus">
                                                <TextBox.Text>
                                                    <Binding Path="Wert" Mode="TwoWay" />
                                                </TextBox.Text>
                                            </TextBox>
                                        </Grid>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
4

1 に答える 1

-1

ItemsControl に TabIndex 値を設定しました。WPF が行うことは、すべての行に同じ TabIndices を与えることです。これは次のことを意味します。

行1.cb1.TabIndex = 20 |行1.cb2.TabIndex = 21| 行 1.tb.TabIndex = 22
行 2.cb1.TabIndex = 20 |行 2.cb2.TabIndex = 21| row2.tb.TabIndex = 22

2 番目の行の 20 は最初の行の 21 よりも小さいため、2 番目のコンボボックス wpf は最初に行を循環してから、列を循環します。

手動で設定された TabIndex 値を除外してみてください! このように、WPF の自動化されたタブ移動を使用して、最初に子を循環し、次に XAML の兄弟を循環します。

そのようです:

                        <ItemsControl ItemsSource="{Binding}" Name="myItemsControl">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="3*"/>
                                            <ColumnDefinition Width="*"/>
                                            <ColumnDefinition Width="Auto"/>
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                        </Grid.RowDefinitions>
                                        <ComboBox Grid.Column="0" ItemsSource="{Binding Source={StaticResource SomeItems}}" IsSynchronizedWithCurrentItem="False" SelectedItem="{Binding Path=SomeValue, Mode=TwoWay}" DisplayMemberPath="Name"/>
                                        <ComboBox Grid.Column="1" ItemsSource="{Binding Source={StaticResource SomeOtherItems}}" IsSynchronizedWithCurrentItem="False" SelectedItem="{Binding Path=SomeOtherValue, Mode=TwoWay}" DisplayMemberPath="Value"/>
                                        <TextBox HorizontalContentAlignment="Stretch" Grid.Column="2" LostKeyboardFocus="TextBox_FormatAfterLostFocus">
                                            <TextBox.Text>
                                                <Binding Path="Wert" Mode="TwoWay" />
                                            </TextBox.Text>
                                        </TextBox>
                                    </Grid>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
于 2010-01-23T16:25:14.317 に答える