我正在使用最新版本的 WPF 工具包。我正在尝试设置 AutoCompleteBox 的样式,但似乎无法让“IsFocused”触发器工作。基本上我希望它表现得像我的 TextBox 风格,所以我为 AutoCompleteBox 做了一个。我什至尝试将我的 TextBox 样式分配给 AutoCompleteBox 的 TextBoxStyle 属性,但我仍然没有看到 IsFocused 触发器触发。
我确实尝试在后面的代码中玩耍,并注意到如果我覆盖 OnGotFocus 和 OnLostFocus ,它们就永远不会被调用。但是,如果我将一些事件处理程序连接到 GotFocus 和 LostFocus 事件,那么我终于看到发生了一些事情。如果连接到事件是查看 IsFocused 更改的唯一方法,那么这似乎是一个丑陋的 hack。是否有一些解决方法或我应该做一些不同的事情?
我的 TexBox 风格
<Style TargetType="TextBox" x:Key="TextBoxStyle">
<Setter Property="Background" Value="{StaticResource TextBoxBackground}"/>
<Setter Property="Foreground" Value="{StaticResource Foreground}"/>
<Setter Property="CaretBrush" Value="{StaticResource Foreground}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ScrollViewer x:Name="PART_ContentHost" Margin="1"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
</Trigger>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我的自动完成框样式
<Style TargetType="WpfToolkitInput:AutoCompleteBox" x:Key="AutoCompleteBoxStyle">
<Setter Property="Background" Value="{StaticResource TextBoxBackground}"/>
<Setter Property="Foreground" Value="{StaticResource Foreground}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="TextBoxStyle" Value="{StaticResource TextBoxStyle}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
</Trigger>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="{StaticResource TextBoxBackgroundSelected}"/>
</Trigger>
</Style.Triggers>
有任何想法吗?
感谢您的时间!