当WPF控件获得焦点时,如何突出显示它?

5
我正在开发一个WPF应用程序,其中有许多屏幕,每个屏幕上都有很多控件。确定哪个控件具有焦点变得非常困难。
所以我想突出显示当前具有焦点的控件。它可能是文本框、按钮、组合框、列表框或网格。
如果我们能使用样式和触发器来完成这一点,那就更好了。
谢谢
3个回答

8

您应该为正确的事件使用触发器。在您的情况下,它是IsFocused。简单示例:

<Trigger Property="IsFocused" Value="true">
    <Setter Property="BorderBrush" Value="Red" />
    <Setter Property="BorderThickness" Value="1" />
</Trigger>

如果您想要为特定的控件类型应用此样式(例如使用TargetType =“{x:Type TextBox}”),则应使用Style标签。如果您想要将其应用于应用程序中的所有控件类型,则应考虑使用仅包含此类触发器的基本样式,然后在自定义样式中使用BasedOn属性继承它:<Style TargetType =“{x:Type TextBox}” BasedOn =“{StaticResource BaseFocusStyle}”>。如何完成此操作的好例子是SO问题:“如何使Style.Triggers触发应用不同的命名样式”。

0
我建议在每个控件的自定义样式中使用可视状态。所有标准控件都支持这种可视状态。例如,查看按钮的MSDN样式,您会注意到有一个聚焦的可视状态。这篇 MSDN文章也可能对您有所帮助。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接