UIElement.Focusable Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.