Comparteix a través de


UIElement.Focusable Propiedad

Definición

Obtiene o establece un valor que indica si el elemento puede recibir el foco. Se trata de 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

true si el elemento es centrable; de lo contrario, false. El valor predeterminado es false.

Implementaciones

Ejemplos

En el código de ejemplo siguiente se muestra una plantilla de control para un control personalizado determinado, que establece Focusablefalse 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 aparente valor "predeterminado" establecido de forma diferente en las clases de elementos derivados, 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 control de Button será true, aunque Button hereda Focusable como una propiedad de Common Language Runtime (CLR) directamente desde UIElement. Esto se debe a que el valor de metadatos aplicado para la propiedad de dependencia Focusable se invalidó dentro del constructor estático de la clase base Control, que se encuentra entre Button y UIElement en la jerarquía de clases.

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

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

Información de la propiedad dependency

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 sea centrable, ya que de forma predeterminada el elemento no será centrable. 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:

FocusableProperty.OverrideMetadata(typeof(myElement), new UIPropertyMetadata(true));
FocusableProperty.OverrideMetadata(GetType(myElement), New UIPropertyMetadata(True))

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