我在 ControlTemplate 中为带有 InputBindings(Enter 的 KeyBinding)的 TextBox 创建了 WPF 样式。Style 和 InputBindings 对我的 TextBoxes 工作正常,但如果我将这个 Style 用于我的 TextBoxes,TabOrder/TabStop 将不再工作。
这是风格:
<Style x:Key="TextBoxTemplate" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="FontSize" Value="16"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Margin" Value="5,0,5,5"/>
<Setter Property="Width" Value="150"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<TextBox Text="{TemplateBinding Text}">
<TextBox.InputBindings>
<KeyBinding Command="{Binding EnterKeyCommand}" Key="Enter"/>
</TextBox.InputBindings>
</TextBox>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我如何将它添加到我的文本框:
<TextBox Text={Binding FirstName} Style="{StaticResource TextBoxTemplate}">
<TextBox Text={Binding LastName} Style="{StaticResource TextBoxTemplate}">
我认为问题在于我在 ControlTemplate 中使用了 TextBox。但我不知道如何在模板内没有 TextBox 的情况下运行 InputBindings
你有什么主意吗?谢谢菲尔