UIElement.Focusable UIElement.Focusable UIElement.Focusable UIElement.Focusable Property

定義

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

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

プロパティ値

要素がフォーカス可能な場合は、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.

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

注釈

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

Focusableは、実際の依存関係プロパティのプロパティアクセサーです。Microsoft .NETMicrosoft .NETFocusable 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.

たとえば、 ButtonコントロールののFocusable "既定" は、からButton Focusable true 共通言語ランタイム (CLR)common language runtime (CLR) 直接プロパティとして継承される場合でも、UIElementになります。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 、依存関係プロパティの適用されたメタデータ値が、クラス階層内ControlのとUIElementの間Buttonにある基底クラスの静的コンストラクター内でオーバーライドされたためです。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 false派生クラス) によって継承されると、既定値は再びに再定義されます。 ControlWhen 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 NoneNone

注意 (継承者)

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

適用対象

こちらもご覧ください