UIElement.Focusable Propriedade

Definição

Obtém ou define um valor que indica se o elemento pode receber o foco. É uma propriedade de dependência.

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 da propriedade

true se o elemento estiver focalizável; caso contrário false. O padrão é false.

Implementações

Exemplos

O código de exemplo a seguir ilustra um modelo de controle para um controle personalizado específico, que define Focusablefalse um dos elementos dentro do modelo.

<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>

Comentários

Somente o elemento focalizado recebe entrada de teclado.

Focusable é o acessador de propriedade Microsoft .NET para o que é, na realidade, uma propriedade de dependência. Essa propriedade de dependência específica frequentemente tem seu valor "padrão" aparente definido de forma diferente em classes de elemento derivadas, particularmente em controles. Isso geralmente ocorre de duas maneiras:

  • A propriedade de dependência é herdada por uma classe derivada específica, mas essa classe derivada substitui os metadados da propriedade de dependência e altera o valor padrão da propriedade.
  • Um estilo ou modelo é aplicado a um elemento, que define esse valor de propriedade de dependência de forma diferente.

Por exemplo, o aparente "padrão" de Focusable um Button controle será true, mesmo que Button herda Focusable como uma propriedade CLR (Common Language Runtime) diretamente de UIElement. Isso ocorre porque o valor dos metadados aplicados para a Focusable propriedade de dependência foi substituído dentro do construtor estático da Control classe base, que está situada entre Button e UIElement na hierarquia de classe.

Quando herdado por ou suas Control classes derivadas, Control redefine o valor padrão dessa propriedade para ser true.

Quando herdado por Label (que é uma Control classe derivada), o valor padrão é redefinido novamente para ser false.

Informações da propriedade Dependency

Item Value
Campo identificador FocusableProperty
Propriedades de metadados definidas como true None

Notas aos Herdeiros

Ao derivar diretamente UIElement (em vez de de Control), considere se deseja que seu elemento seja focalizável, pois por padrão o elemento não será focalizável. Se desejar que o elemento seja focalizável, substitua os metadados dessa propriedade no construtor estático do seu tipo da seguinte maneira:

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

myElement deve ser o nome da classe do tipo em que você está substituindo o valor dos metadados.

Aplica-se a

Confira também