UIElement.Focusable Proprietà

Definizione

Ottiene o imposta un valore che indica se l'elemento può ricevere lo stato attivo. Si tratta di una proprietà di dipendenza.

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

Valore della proprietà

true se l'elemento è attivabile; in caso contrario, false. Il valore predefinito è false.

Implementazioni

Esempio

Il codice di esempio seguente illustra un modello di controllo per un controllo personalizzato specifico, che imposta Focusablefalse su uno degli elementi all'interno del modello.

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

Commenti

Solo l'elemento con stato attivo riceve l'input da tastiera.

Focusable è la funzione di accesso alle proprietà Microsoft .NET per ciò che è in realtà una proprietà di dipendenza. Questa particolare proprietà di dipendenza ha spesso un valore "predefinito" evidente impostato in modo diverso nelle classi di elementi derivate, in particolare nei controlli. Questo problema si verifica in genere in uno dei due modi seguenti:

  • La proprietà di dipendenza viene ereditata da una determinata classe derivata, ma tale classe derivata esegue l'override dei metadati della proprietà di dipendenza e modifica il valore predefinito della proprietà.

  • Uno stile o un modello viene applicato a un elemento , che imposta il valore della proprietà di dipendenza in modo diverso.

Ad esempio, l'apparente "impostazione predefinita" di Focusable per un controllo Button verrà true, anche se Button eredita Focusable come proprietà CLR (Common Language Runtime) direttamente da UIElement. Questo perché il valore dei metadati applicato per la proprietà di dipendenza Focusable è stato sottoposto a override all'interno del costruttore statico della classe base Control, che si trova tra Button e UIElement nella gerarchia di classi.

Se ereditato da Control o dalle relative classi derivate, Control ridefinisce il valore predefinito di questa proprietà in modo che sia true.

Se ereditato da Label (che è una classe derivata Control), il valore predefinito viene ridefinito in modo da essere false.

Informazioni sulle proprietà di dipendenza

Campo Identificatore FocusableProperty
Proprietà dei metadati impostate su true Nessuno

Note per gli eredi

Quando si deriva da UIElement direttamente (anziché da Control), valutare se si desidera che l'elemento sia attivabile, perché per impostazione predefinita l'elemento non sarà attivabile. Se si desidera che l'elemento sia attivabile, eseguire l'override dei metadati per questa proprietà all'interno del costruttore statico del tipo come indicato di seguito:

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

dove myElement deve essere il nome della classe del tipo su cui si esegue l'override del valore dei metadati.

Si applica a

Vedi anche