WPF - Как установить порядок вкладок для определенных элементов внутри элемента управления - PullRequest
1 голос
/ 02 июля 2019

У меня есть ItemsControl, который динамически создает TextBoxes. Когда я пролистываю, я хочу, чтобы он фокусировался только на одном конкретном текстовом поле.

При прокрутке фокус должен переключаться на каждый Coin_Qty_TxtBx

Я пробовал разные варианты с опциями KeyboardNavigation, но не смог заставить его работать. Я также попытался вручную связать TabIndex в текстовом поле со списком целых чисел.

<ItemsControl x:Name="Coins_LB" BorderThickness="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" KeyboardNavigation.TabNavigation="Continue">

                   <ItemsControl.ItemContainerStyle>
                                <Style>
                                    <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
                                </Style>
                            </ItemsControl.ItemContainerStyle>

                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel IsItemsHost="True" Orientation="Horizontal" />
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>

                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Grid.Column="0">
                                        <Button x:Name="CoinPicture_Btn" BorderThickness="0" Background="white" Style="{StaticResource AddRemoveSave_Style}" VerticalAlignment="Top" Height="60" Width="60" HorizontalAlignment="Center" Margin="0,0,0,3" Click="CashPicture_Btn_Click" IsTabStop="False">
                                            <Image Source="{Binding PicturePath}" RenderOptions.BitmapScalingMode="Fant" Margin="-15, -20, -15, -30" />
                                        </Button>
                                        <Label x:Name="Coin_Name_Lbl" Content="{Binding Name}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" Margin="0,1,0,0" VerticalAlignment="Top" Width="72" FontWeight="Bold" Grid.Column="0"/>
                                        <TextBox x:Name="Coin_Qty_TxtBx" Text="{Binding Count, Mode=TwoWay}" Margin="5,2" IsTabStop="True" HorizontalContentAlignment="Center" LostFocus="Cash_Qty_LostFocus" GotKeyboardFocus="Cash_Qty_GotFocus"/>
                                        <TextBox x:Name="Coin_ItemTotal_TxtBx" Text="{Binding Total, StringFormat='c'}" Margin="5,2" HorizontalContentAlignment="Center"/>
                                    </StackPanel>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>

Прямо сейчас он сфокусируется на самом первом Coin_Qty_TxtBx, но после откладывания оттуда фокус полностью покидает ItemsControl.

1 Ответ

0 голосов
/ 02 июля 2019

Вам просто нужно установить IsTabStop="False" на этих элементах управления, на которые вы не хотите вкладывать.

Например:

<TextBox x:Name="Coin_ItemTotal_TxtBx" IsTabStop="False"... />
...