我正在开发一个WPF应用程序,其中有许多屏幕,每个屏幕上都有很多控件。确定哪个控件具有焦点变得非常困难。
所以我想突出显示当前具有焦点的控件。它可能是文本框、按钮、组合框、列表框或网格。
如果我们能使用样式和触发器来完成这一点,那就更好了。
谢谢
所以我想突出显示当前具有焦点的控件。它可能是文本框、按钮、组合框、列表框或网格。
如果我们能使用样式和触发器来完成这一点,那就更好了。
谢谢
您应该为正确的事件使用触发器。在您的情况下,它是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触发应用不同的命名样式”。您也可以尝试为此行为创建一个装饰器;如果您愿意使用第三方开源库,则可以查看CodePlex上的此实现,您还可以浏览代码以了解如何实现自己的装饰器 -
http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation
另一个类似的问题,详细介绍了其他解决方案 - 可重复使用的方法,用于在当前具有焦点的任何元素周围放置鲜红色框?