UIElement.Focusable プロパティ


要素がフォーカスを得ることができるかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether the element can receive focus. これは依存関係プロパティです。This is a dependency property.

 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



要素がフォーカス可能な場合は、true。それ以外の場合は、falsetrue if the element is focusable; otherwise false. 既定値は、false です。The default is false.


次のコード例は、 Focusable false テンプレート内のいずれかの要素にを設定する、特定のカスタムコントロールのコントロールテンプレートを示しています。The following example code illustrates a control template for a particular custom control, which sets Focusable false on one of the elements within the template.

  <Style x:Key="TextBoxNoScrollViewer" TargetType="{x:Type TextBoxBase}">
    <Setter Property="Template">
        <ControlTemplate TargetType="{x:Type TextBoxBase}">
            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.  


フォーカスがある要素のみがキーボード入力を受け取ります。Only the focused element receives keyboard input.

Focusable は、実際の依存関係プロパティの Microsoft .NET プロパティアクセサーです。Focusable is the Microsoft .NET property accessor for what is in reality a dependency property. この特定の依存関係プロパティは、派生要素クラスでは特にコントロールで、明確な "既定" 値が設定されていることが非常によくあります。This particular dependency property quite frequently has its apparent "default" value set differently in derived element classes, particularly in controls. これは、通常、次の2つの方法のいずれかで発生します。This commonly occurs in one of two ways:

  • 依存関係プロパティは特定の派生クラスによって継承されますが、その派生クラスは依存関係プロパティのメタデータをオーバーライドし、プロパティの既定値を変更します。The dependency property is inherited by a particular derived class, but that derived class overrides the metadata of the dependency property and changes the property default value.

  • スタイルまたはテンプレートが要素に適用され、その依存関係プロパティの値が別に設定されます。A style or template is applied to an element, which sets that dependency property value differently.

たとえば、コントロールのの "既定" は、 Focusable Button からの true Button Focusable 直接共通言語ランタイム (CLR) プロパティとし UIElement てを継承している場合でも、になります。For example, the apparent "default" of Focusable for a Button control will be true, even though Button inherits Focusable as a common language runtime (CLR) property directly from UIElement. これは、依存関係プロパティの適用されたメタデータ値が、 Focusable Control Button UIElement クラス階層内のとの間にある基底クラスの静的コンストラクター内でオーバーライドされたためです。This is because the applied metadata value for the Focusable dependency property was overridden within the static constructor of the Control base class, which is situated between Button and UIElement in the class hierarchy.

Controlまたはその派生クラスによって継承される場合、 Control このプロパティの既定値をに再定義し true ます。When inherited by Control or its derived classes, Control redefines the default value of this property to be true.

(派生クラス) によって継承されると Label Control 、既定値は再びに再定義され false ます。When inherited by Label (which is a Control derived class), the default value is again redefined to be false.

依存プロパティ情報Dependency Property Information

識別子フィールドIdentifier field FocusableProperty
メタデータプロパティがに設定される trueMetadata properties set to true なしNone

注意 (継承者)

(From ではなく) から直接派生する場合は、要素にフォーカスを設定しないようにする必要があるため、要素にフォーカスを UIElement Control 設定するかどうかを検討してください。When deriving from UIElement directly (as opposed to from Control), consider whether you wish your element to be focusable, because by default the element will not be focusable. 要素にフォーカスを設定する場合は、次のように、型の静的コンストラクター内でこのプロパティのメタデータをオーバーライドします。If you wish your element to be focusable, override the metadata for this property within your type's static constructor as follows: [! code-csharpCorePseudocode # UIElementShortOverride][! code-vbCorePseudocode # UIElementShortOverride][!code-csharpCorePseudocode#UIElementShortOverride] [!code-vbCorePseudocode#UIElementShortOverride] ここ myElement で、には、メタデータ値をオーバーライドする型のクラス名を指定します。where myElement should be the class name of the type that you are overriding the metadata value on.