【发布时间】:2020-03-09 02:46:24
【问题描述】:
我想通过父 StackPanel 的 IsMouseOver 触发器将键盘焦点设置在 TextBox 上。
TextBox 获得焦点并且插入符号可见,但是一旦我将鼠标从 StackPanel 移开,TextBox 就会失去焦点。
<Style x:Key="TextboxStyle" TargetType="TextBox">
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="Black" />
<Setter Property="FontSize" Value="26" />
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="#FF2952CD"/>
<Setter Property="CaretBrush" Value="Black"/>
<Setter Property="Background" Value="#FF0D274A"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type StackPanel}}}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}}" />
<Setter Property="FocusManager.IsFocusScope" Value="True" />
</DataTrigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="Goldenrod"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
<Trigger Property="IsFocused" Value="False">
<Setter Property="Background" Value="#FF0D274A"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
我尝试了许多变体,但无法让它发挥作用。
【问题讨论】: