UIElement.Focusable Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.