WPF - 如何设置选项卡索引以直接转到 ContentControl 内的文本框?

问题描述 投票:0回答:1

我有一个在 DataTemplate 中定义的自定义 TextBox 模板。我使用 ContentControl 在我的视图中创建这些自定义文本框。

文本框由一个文本框组成,其下方有空间,可在需要时显示错误消息(绑定到我定义为“TextValidation”的自定义类)。

当我有一系列自定义文本框时,我希望在一个文本框中按 Tab 键并最终进入下一个文本框。但是,每当我按 Tab 时,它都会突出显示整个 ContentControl。然后在第二次按 Tab 时,光标将进入文本框。

我希望能够按 Tab 键并从一个 ContentControl 中的文本框直接进入下一个 ContentControl 中的文本框。

这是我创建两个文本框的视图:

<ContentControl Content="{Binding Text1}" Margin="0 0 0 10"
                ContentTemplate="{StaticResource TextBoxTemplate}"/>
<ContentControl Content="{Binding Text2}" Margin="0 0 0 10"
                ContentTemplate="{StaticResource TextBoxTemplate}"/>

Text1 和 Text2 来自我定义为“TextValidation”的自定义类

public class TextValidation
    {
        public string Text;
        public bool Error;
        public string ErrorMsg;
    }

TextBoxTemplate 在 ResourceDictionary 中定义(我已删除所有不相关的设置器/样式):

<DataTemplate x:Key="TextBoxTemplate">
        <TextBox>
            <TextBox.Style>
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="Text" Value="{Binding Text, UpdateSourceTrigger=PropertyChanged}"/>
                <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type TextBox}">
                                <StackPanel>
                                    <Border x:Name="border" CornerRadius="3"
                                        Background="White"
                                        BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
                                        SnapsToDevicePixels="True">
                                        <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
                                    </Border>
                                    <StackPanel Orientation="Horizontal" x:Name="errorMsg" Height="20">
                                        <TextBlock FontSize="12" FontStyle="Italic" Foreground="#ff3333"
                                    Text="{Binding ErrorMsg}" />
                                    </StackPanel>
                                </StackPanel>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TextBox.Style>
        </TextBox>
</DataTemplate>

有人知道如何修复选项卡索引,以便我可以直接从一个文本框转到另一个文本框吗?

c# wpf xaml user-interface tabindex
1个回答
0
投票

焦点转移到 ContentControl。我只是将“IsTabStop=”false”添加到 ContentControl 中并修复了它。

© www.soinside.com 2019 - 2024. All rights reserved.