Compartir a través de


Cómo: Aplicar FocusVisualStyle a un control

En este ejemplo se muestra cómo crear un estilo visual de foco en los recursos y aplicar el estilo a un control, utilizando la propiedad FocusVisualStyle.

Ejemplo

En el ejemplo siguiente se define un estilo que crea una composición de controles adicional que se aplica únicamente cuando ese control recibe el foco del teclado en la user interface (UI). Para ello, se define un estilo con ControlTemplate, y luego se hace referencia a ese estilo como un recurso al establecer la propiedad FocusVisualStyle.

Un rectángulo externo que parece un borde se coloca fuera del área rectangular. A menos que se modifique de otro modo, la operación de ajuste de tamaño del estilo utiliza las propiedades ActualHeight y ActualWidth del control rectangular donde se aplica el estilo visual de foco. En este ejemplo se establecen valores negativos para Margin, a fin de que el borde parezca ligeramente fuera del control que tiene el foco.

<Page
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
>
  <Page.Resources>
    <Style x:Key="MyFocusVisual">
      <Setter Property="Control.Template">
        <Setter.Value>
          <ControlTemplate>
            <Rectangle Margin="-2" StrokeThickness="1" Stroke="Red" StrokeDashArray="1 2"/>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </Page.Resources>
  <StackPanel Background="Ivory" Orientation="Horizontal">
    <Canvas Width="10"/>
    <Button Width="100" Height="30" FocusVisualStyle="{DynamicResource MyFocusVisual}">
      Focus Here</Button>
    <Canvas Width="100"/>
    <Button Width="100" Height="30" FocusVisualStyle="{DynamicResource MyFocusVisual}">
      Focus Here</Button>
  </StackPanel>
</Page>

FocusVisualStyle se aplica además de cualquier estilo de plantilla de control que proceda de un estilo explícito o de un estilo de tema; sigue siendo posible crear el estilo primario de un control mediante ControlTemplate y estableciendo ese estilo en la propiedad Style.

Los estilos visuales de foco deben utilizarse de manera coherente en un tema o una interfaz de usuario, en lugar de utilizar uno diferente para cada elemento que pueda recibir el foco. Para obtener información detallada, vea Aplicar estilo a los controles al recibir el foco y FocusVisualStyle.

Vea también

Referencia

FocusVisualStyle

Conceptos

Aplicar estilos y plantillas

Aplicar estilo a los controles al recibir el foco y FocusVisualStyle