WPF 標準コントロールデモアプリ › Label
Label Display
Label はテキストを表示するコンテンツコントロールで、アクセスキー(ニーモニック)をサポートします。TextBlock と異なり、Target プロパティで別のコントロールとリンクしてキーボードナビゲーションを有効にできます。
概要
WPF の Label は ContentControl を継承したコントロールで、主にフォームの入力フィールドの隣にラベルを表示するために使用されます。TextBlock との最大の違いは、ラベルテキストに _(アンダースコア)を使ってアクセスキー(ニーモニック)を定義できる点です。
Target プロパティに別のコントロール(TextBox など)を指定すると、アクセスキー(Alt+文字)を押したときにそのコントロールにフォーカスが移動します。例えば Content="_名前:" と設定した Label に Target="{x:Reference nameTextBox}" を指定すると、Alt+N で名前 TextBox にフォーカスが移動します。
Label は ContentControl なので、Content には文字列だけでなく任意の WPF 要素を配置できます。アイコン付きラベルや複合コンテンツのラベルも作成できます。
単純なテキスト表示にはより軽量な TextBlock を使うことを推奨します。Label はアクセスキーや Target が必要な場合、または ContentControl の特性が必要な場合に選択します。
画面キャプチャ

デモしているプロパティ
以下のプロパティが WPF 標準コントロールデモアプリでインタラクティブにデモされています。
| プロパティ | 設定値 | 説明 |
|---|---|---|
Target | UIElement | Alt+アクセスキーが押されたときにキーボードフォーカスを移動させたいコントロール(TextBox など)を設定します。設定したコントロールにフォーカスが移動し、ユーザーがマウスを使わずにフォームを操作できるようになります。参照には {Binding ElementName=xxx} より {x:Reference xxx} が推奨されます(コンパイル時に検証されるため安全)。はまりポイント: Target は同じ FocusScope 内のコントロールにのみ機能します。ToolBar や Menu など独自の FocusScope を持つコントロール内のターゲットには意図通りに動作しないことがあります。 |
Content (ContentControl) | object | フォームのフィールド説明テキストを表示したり、Alt キーによるキーボードショートカットを提供したい場合に設定します。_ で始まる文字がアクセスキーとして機能し、Alt を押したときにその文字にアンダーラインが表示されます。__(アンダースコア2つ)を使うとリテラルのアンダースコア文字として表示できます。文字列以外にも任意の WPF 要素を設定できます。はまりポイント: Target はアクセスキーの解釈や下線表示そのものではなく、主にアクセスキー押下時のフォーカス移動先を決めるためのプロパティです。Target を設定しなくても _ によるアクセスキー表記や下線表示は行われますが、フォーカスを移動させたい場合は適切なターゲットを設定してください。 |
Padding (Control) | Thickness | コンテンツとコントロール境界線の間の内側余白を設定します。デフォルトは 5,0,0,0(左5px)です。コンパクトなフォームレイアウトや大きなフォントを使用する場合に上下の余白を調整するために使用します。はまりポイント: Padding を 0 に設定するとテキストがボーダーに密着して読みにくくなります。フォントサイズを変更した場合は Padding も合わせて調整してください。 |
FontSize / FontWeight / FontFamily (Control) | various | フォントサイズ・太さ・フォントファミリーを設定します。これらは親要素から継承されるため、Window や共通の親パネルに設定するとフォーム全体のスタイルを一括管理できます。アプリ全体でスタイルを統一する場合は App.xaml のリソースで定義するのがベストプラクティスです。はまりポイント: すべてのフォントがすべての FontWeight をサポートしているわけではありません。Bold や Light を指定しても対応フォントがない場合は最も近いウェイトが使われます。 |
Background / Foreground (Control) | Brush | ラベルの背景色とテキストの前景色を設定します。有効/無効状態に応じた視覚フィードバックを提供したい場合に、IsEnabled のトリガーと組み合わせて色を変更するのが典型的な使用例です。テーマ対応のアプリでは DynamicResource でシステムカラーを参照すると自動的にライト/ダークテーマに追従します。はまりポイント: Foreground をハードコードした色に設定するとダークテーマ時に背景と同化する可能性があります。テーマブラシ({DynamicResource ControlTextBrush} など)の使用を推奨します。 |
XAML 使用例
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- _名 でアクセスキー設定 (Alt+N でフォーカス移動) -->
<Label Grid.Row="0" Grid.Column="0"
Content="_名前:" Target="{Binding ElementName=nameBox}" />
<TextBox x:Name="nameBox" Grid.Row="0" Grid.Column="1"
Text="{Binding Name}" />
<Label Grid.Row="1" Grid.Column="0"
Content="_メール:" Target="{Binding ElementName=emailBox}" />
<TextBox x:Name="emailBox" Grid.Row="1" Grid.Column="1"
Text="{Binding Email}" />
</Grid>主な使用例
- フォームフィールドのラベル — 入力フィールドの左側に配置し、Alt+キーでフォーカス移動できるアクセスキー付きラベルとして使用します。
- アクセシビリティ対応フォーム — スクリーンリーダー利用者のためにすべての入力フィールドに対応するラベルを配置します。
- ステータス表示 — 読み取り専用のステータス情報を表示するラベルとして使用します。
- ウィザードのステップ説明 — ウィザードの各ステップで必要な入力内容の説明をラベルで表示します。
ヒントとベストプラクティス
- 単純なテキスト表示には TextBlock を使う — アクセスキーや Target が不要な場合は、より軽量な TextBlock を使います。Label は
ContentControlを継承するため TextBlock よりリソースを消費します。 - _ でアクセスキーを定義する —
Contentの文字列中に_を置くと次の文字がアクセスキーになります(例:_名前:→ Alt+N でフォーカス移動)。実際の_を表示したい場合は__と書きます。 - x:Reference でターゲットを参照する —
{Binding ElementName=xxx}より{x:Reference xxx}の方が推奨されます。x:Referenceはコンパイル時に検証されるため、名前のタイポを早期に検出できます。 - HorizontalContentAlignment で整列 — ラベルのテキストを右揃えにする場合は
HorizontalContentAlignment="Right"を設定します。Grid フォームで複数ラベルの幅を揃えてテキストを右揃えにすることで整然としたフォームレイアウトになります。 - FocusScope に注意する —
Targetで指定するコントロールは Label と同じ FocusScope 内にある必要があります。ToolBarやMenuなどは独自の FocusScope を持つため、その外部の Label のTargetに指定しても機能しないことがあります。
関連コントロール
ソースコード
このデモ画面のソースコードは GitHub で公開しています。アプリ内の「コード表示」ボタンから各プロパティの実際の XAML を確認できます。