UIElement.Focusable Propriedade

Definição

Obtém ou define um valor que indica se o elemento pode receber o foco. Essa é 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 em 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 propriedades do 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 para um controle Button será true, embora Button herda Focusable como uma propriedade CLR (Common Language Runtime) diretamente de UIElement. Isso ocorre porque o valor de metadados aplicado para a propriedade de dependência Focusable foi substituído dentro do construtor estático da classe base Control, que está situada entre Button e UIElement na hierarquia de classe.

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

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

Informações da propriedade Dependency

Campo identificador FocusableProperty
Propriedades de metadados definidas como true Nenhum

Notas aos Herdeiros

Ao derivar de UIElement diretamente (em vez 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))

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

Aplica-se a

Confira também