2012-06-14 15 views
5

Estoy trabajando en una aplicación WPF que tiene muchas pantallas y cada pantalla tiene muchos controles sobre ella. Se vuelve muy difícil determinar qué control tiene foco.Resalta un control WPF cuando se enfoca

Así que quiero resaltar el control que actualmente tiene foco en él. Podría ser cuadro de texto, botón, cuadro combinado, cuadro de lista o cuadrícula.

Será mejor si pudiéramos hacer esto usando estilos y activadores.

Gracias

Respuesta

7

Debe utilizar un disparador para el evento correcto. En tu caso es IsFocused. Un simple ejemplo:

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

Usted debe utilizar una etiqueta Style, si desea aplicar este estilo para un determinado tipo de control(TargetType="{x:Type TextBox}" utilizar, por ejemplo).

Si desea aplicar a todo el control tipos de su aplicación, lo que debería considerar el uso de un estilo de base con solamente este tipo de gatillo y que sólo heredarlo en sus estilos personalizados con una ayuda de BasedOn atributo: <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseFocusStyle}">

Un buen ejemplo de cómo hacer esto es una pregunta ASÍ: "How to make Style.Triggers trigger a different named style to be applied".

0

Sugeriría usar estados visuales en estilos personalizados para cada control. Todos los controles estándar soportarán este estado visual. Por ejemplo, consulte el estilo de MSDN para button y verá que hay un estado visual para Enfocado. This El artículo de MSDN también podría ayudarlo.

0

También puede intentar y crear un adorner para este comportamiento; en caso de que estén abiertos al uso de la biblioteca de código abierto del partido 3'rd continuación, echar un vistazo a esta aplicación en CodePlex, también puede ir a través del código para obtener idea acerca de cómo implementar su propio adorner -

http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation

enter image description here

Otra pregunta similar que tiene detalles acerca de otras soluciones - Reusable way to put a bright red box around whatever element currently has focus?

Cuestiones relacionadas