UIElement.Focusable Propiedad

Definición

Obtiene o establece un valor que indica si el elemento puede recibir el foco. Es una propiedad de dependencia.

public:
 property bool Focusable { bool get(); void set(bool value); };
public bool Focusable { get; set; }
member this.Focusable : bool with get, set
Public Property Focusable As Boolean

Valor de propiedad

Boolean

true si el elemento admite foco; en caso contrario, false. De manera predeterminada, es false.

Implementaciones

Ejemplos

En el código de ejemplo siguiente se muestra una plantilla de control para un control personalizado determinado, que establece Focusable false en uno de los elementos de la plantilla.

<Window.Resources>
  <Style x:Key="TextBoxNoScrollViewer" TargetType="{x:Type TextBoxBase}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type TextBoxBase}">
          <Border 
            CornerRadius="2" 
            Background="{TemplateBinding Background}" 
            BorderThickness="{TemplateBinding BorderThickness}" 
            BorderBrush="{TemplateBinding BorderBrush}"  
          >
            <!-- 
            The control template for a TextBox or RichTextBox must
            include an element tagged as the content host.  An element is 
            tagged as the content host element when it has the special name
            PART_ContentHost.  The content host element must be a ScrollViewer,
            or an element that derives from Decorator.  
            -->
            <AdornerDecorator 
              x:Name="PART_ContentHost"
              Focusable="False" 
            />
          </Border>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</Window.Resources>

Comentarios

Solo el elemento centrado recibe la entrada del teclado.

Focusable es el descriptor de acceso de propiedad de Microsoft .NET para lo que en realidad es una propiedad de dependencia. Esta propiedad de dependencia determinada suele tener su valor "predeterminado" aparentemente establecido de forma diferente en las clases de elementos derivadas, especialmente en los controles. Esto suele ocurrir de una de estas dos maneras:

  • Una clase derivada determinada hereda la propiedad de dependencia, pero esa clase derivada invalida los metadatos de la propiedad de dependencia y cambia el valor predeterminado de la propiedad.

  • Un estilo o plantilla se aplica a un elemento , que establece ese valor de propiedad de dependencia de forma diferente.

Por ejemplo, el "valor predeterminado" aparente de Focusable para un Button control será true, aunque Button se Focusable herede como una propiedad de Common Language Runtime (CLR) directamente de UIElement. Esto se debe a que el valor de metadatos aplicado para la Focusable propiedad de dependencia se invalidó dentro del constructor estático de la Control clase base, que se encuentra entre Button y UIElement en la jerarquía de clases.

Cuando se heredan por Control o sus clases derivadas, Control vuelve a definir el valor predeterminado de esta propiedad para que sea true.

Cuando se hereda por Label (que es una Control clase derivada), el valor predeterminado se vuelve a redefinir para que sea false.

Información sobre propiedades de dependencia

Campo identificador FocusableProperty
Propiedades de metadatos establecidas en true Ninguno

Notas a los desarrolladores de herederos

Al derivar de UIElement directamente (en lugar de desde Control), considere si desea que el elemento se pueda centrar, ya que de forma predeterminada el elemento no se puede centrar. Si desea que el elemento se pueda centrar, invalide los metadatos de esta propiedad en el constructor estático del tipo de la siguiente manera:

donde myElement debe ser el nombre de clase del tipo en el que se va a invalidar el valor de metadatos.

Se aplica a

Consulte también