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.


次のコード例は、テンプレート内の要素の1つに 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 .NETMicrosoft .NET プロパティアクセサーです。Focusable is the Microsoft .NETMicrosoft .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.

たとえば、ButtonFocusable から 共通言語ランタイム (CLR)common language runtime (CLR) のプロパティとして UIElementを直接継承していても、Button コントロールの Focusable の明らかな "既定" は trueされます。For example, the apparent "default" of Focusable for a Button control will be true, even though Button inherits Focusable as a 共通言語ランタイム (CLR)common language runtime (CLR) property directly from UIElement. これは、Focusable 依存関係プロパティに適用されるメタデータ値が、クラス階層の ButtonUIElement の間にある Control 基底クラスの静的コンストラクター内でオーバーライドされたためです。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
メタデータプロパティが true に設定されるMetadata properties set to true NoneNone

注意 (継承者)

(Controlからではなく) UIElement から直接派生する場合は、既定では要素にフォーカスを設定できないため、要素にフォーカスを設定するかどうかを検討してください。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.