我有一个在 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>
有人知道如何修复选项卡索引,以便我可以直接从一个文本框转到另一个文本框吗?
焦点转移到 ContentControl。我只是将“IsTabStop=”false”添加到 ContentControl 中并修复了它。