UIElement.Focusable プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
要素がフォーカスを受け取ることができるかどうかを示す値を取得または設定します。 これは依存関係プロパティです。
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
します。それ以外の場合は false
。 既定値は false
です。
実装
例
次のコード例は、テンプレート内のいずれかの要素に Focusablefalse
を設定する、特定のカスタム コントロールのコントロール テンプレートを示しています。
<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>
注釈
フォーカスされた要素のみがキーボード入力を受け取ります。
Focusable は、実際には依存関係プロパティである Microsoft .NET プロパティ アクセサーです。 この特定の依存関係プロパティは、派生要素クラス (特にコントロール) では、明らかな "既定" の値が異なる設定を持つ場合がよくあります。 これは一般的に、次の 2 つの方法のいずれかで発生します。
依存関係プロパティは特定の派生クラスによって継承されますが、その派生クラスは依存関係プロパティのメタデータをオーバーライドし、プロパティの既定値を変更します。
スタイルまたはテンプレートが要素に適用され、依存関係プロパティの値が異なる方法で設定されます。
たとえば、Button が共通言語ランタイム (CLR) プロパティとして Focusable を UIElementから直接継承している場合でも、Button コントロールの Focusable の明らかな "既定値" は true
されます。 これは、Focusable 依存関係プロパティの適用されたメタデータ値が、クラス階層内の Button と UIElement の間にある、Control 基底クラスの静的コンストラクター内でオーバーライドされたためです。
Control またはその派生クラスによって継承 Control、このプロパティの既定値を true
に再定義します。
Label (Control 派生クラス) によって継承された場合、既定値は再び再定義され、false
されます。
依存関係プロパティ情報
識別子フィールド | FocusableProperty |
true に設定されたメタデータ プロパティ |
何一つ |
注意 (継承者)
(Controlからではなく) UIElement から直接派生する場合は、既定では要素がフォーカスできないため、要素をフォーカス可能にするかどうかを検討してください。 要素をフォーカス可能にする場合は、次のように型の静的コンストラクター内でこのプロパティのメタデータをオーバーライドします。
FocusableProperty.OverrideMetadata(typeof(myElement), new UIPropertyMetadata(true));
FocusableProperty.OverrideMetadata(GetType(myElement), New UIPropertyMetadata(True))
ここで myElement
は、メタデータ値をオーバーライドする型のクラス名にする必要があります。
適用対象
こちらもご覧ください
.NET