WPF 標準コントロールデモアプリ › Label

Label Display

Label はテキストを表示するコンテンツコントロールで、アクセスキー(ニーモニック)をサポートします。TextBlock と異なり、Target プロパティで別のコントロールとリンクしてキーボードナビゲーションを有効にできます。

概要

WPF の LabelContentControl を継承したコントロールで、主にフォームの入力フィールドの隣にラベルを表示するために使用されます。TextBlock との最大の違いは、ラベルテキストに _(アンダースコア)を使ってアクセスキー(ニーモニック)を定義できる点です。

Target プロパティに別のコントロール(TextBox など)を指定すると、アクセスキー(Alt+文字)を押したときにそのコントロールにフォーカスが移動します。例えば Content="_名前:" と設定した Label に Target="{x:Reference nameTextBox}" を指定すると、Alt+N で名前 TextBox にフォーカスが移動します。

Label は ContentControl なので、Content には文字列だけでなく任意の WPF 要素を配置できます。アイコン付きラベルや複合コンテンツのラベルも作成できます。

単純なテキスト表示にはより軽量な TextBlock を使うことを推奨します。Label はアクセスキーや Target が必要な場合、または ContentControl の特性が必要な場合に選択します。

画面キャプチャ

label demo screen

デモしているプロパティ

以下のプロパティが WPF 標準コントロールデモアプリでインタラクティブにデモされています。

プロパティ設定値説明
TargetUIElementAlt+アクセスキーが押されたときにキーボードフォーカスを移動させたいコントロール(TextBox など)を設定します。設定したコントロールにフォーカスが移動し、ユーザーがマウスを使わずにフォームを操作できるようになります。参照には {Binding ElementName=xxx} より {x:Reference xxx} が推奨されます(コンパイル時に検証されるため安全)。はまりポイント: Target は同じ FocusScope 内のコントロールにのみ機能します。ToolBarMenu など独自の 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 をサポートしているわけではありません。BoldLight を指定しても対応フォントがない場合は最も近いウェイトが使われます。
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>

主な使用例

ヒントとベストプラクティス

関連コントロール

ソースコード

このデモ画面のソースコードは GitHub で公開しています。アプリ内の「コード表示」ボタンから各プロパティの実際の XAML を確認できます。

GitHub で Label のソースコードを見る →