UIElement.Focusable Propriedade

Definição

Recebe ou define um valor que indica se o elemento pode receber foco. Isto é 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 de Propriedade

true se o elemento for focável; caso contrário false. A predefinição é false.

Implementações

Exemplos

O seguinte código de exemplo ilustra um modelo de controlo para um determinado controlo personalizado, que se estabelece Focusablefalse num 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>

Observações

Apenas o elemento focado recebe a entrada do teclado.

Focusable é o acesso à propriedade Microsoft .NET para o que na realidade é uma propriedade de dependência. Esta propriedade de dependência em particular tem frequentemente o seu aparente valor "padrão" definido de forma diferente nas classes de elementos derivadas, particularmente nos controlos. Isto ocorre frequentemente de duas formas:

  • A propriedade de dependência é herdada por uma determinada classe derivada, mas essa classe derivada sobrepõe-se aos metadados da propriedade de dependência e altera o valor padrão da propriedade.
  • Um estilo ou modelo é aplicado a um elemento, que define o valor dessa propriedade de dependência de forma diferente.

Por exemplo, o aparente "padrão" de para um Focusable controlo será Button, mesmo que true herde Button como propriedade de tempo de execução de linguagem comum (CLR) diretamente de Focusable.UIElement Isto deve-se ao facto de o valor de metadados aplicado para a Focusable propriedade de dependência ter sido sobreposto dentro do construtor estático da Control classe base, que está situada entre Button e UIElement na hierarquia de classes.

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

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

Informação de Propriedade de Dependência

Iteme Value
Campo identificador FocusableProperty
Propriedades dos metadados definidas como true None

Notas para Herdeiros

Ao derivar de UIElement diretamente (em vez de ), Controlconsidere se deseja que o seu elemento seja focável, porque por defeito o elemento não será focalizável. Se quiser que o seu elemento seja focável, sobrepone os metadados desta propriedade dentro do construtor estático do seu tipo da seguinte forma:

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

myElement Deve ser o nome da classe do tipo sobre o qual estás a sobrescrever o valor dos metadados.

Aplica-se a

Ver também