我正在开发一个有很多屏幕的WPF应用程序,每个屏幕都有很多控件。 它很难确定哪个控件具有焦点。
所以我想强调一下目前关注它的控件。它可以是文本框,按钮,组合框,列表框或网格。
如果我们能够使用样式和触发器做到这一点会更好。
由于
答案 0 :(得分:8)
您应该为正确的事件使用触发器。在你的情况下它是IsFocused
。简单的例子:
<Trigger Property="IsFocused" Value="true">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="1" />
</Trigger>
如果要将此样式应用于特定控件类型(例如,请使用Style
),则应使用TargetType="{x:Type TextBox}"
标记。
如果您想在应用程序中应用所有控件类型,那么您应该考虑使用仅具有此类触发器的基本样式,而不仅仅是在自定义样式中继承它BasedOn
属性:
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseFocusStyle}">
如何做到这一点的好例子是一个问题:“How to make Style.Triggers trigger a different named style to be applied”。
答案 1 :(得分:0)
答案 2 :(得分:0)
您还可以尝试为此行为创建adorner;如果你打开使用第三方开源库,那么看看codeplex上的这个实现,你也可以通过代码来了解如何实现你自己的装饰 -
http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation
另一个类似的问题,其中包含其他解决方案的详细信息 - Reusable way to put a bright red box around whatever element currently has focus?