Microsoft .NET 4 70-511を使用したWindowsアプリケーション開発 トレーニングキットによると
Label
コントロールとTextBlock
コントロールの違いは何ですか?両方ともコンテンツコントロールであり、テキストを表示するだけですか?
TextBlock
はSystem.Windows.Controls名前空間に存在しますが、コントロールではありません。 FrameworkElement
から直接派生します。一方、ラベルはContentControl
から派生します。これは、Label
ができることを意味します。
Template
プロパティを介して)指定します。Content
プロパティを使用)。DataTemplate
をそのコンテンツに適用します(ContentTemplate
プロパティを使用)。ContentControl
ができることは何でもできますが、FrameworkElement
はできません。
Label
テキストは無効にするとグレー表示されますLabel
はアクセスキーをサポートしますLabel
はTextBlock
よりもはるかに重い以下のいくつかの興味深い読み物
Label
はContentControl
です。これは、コンテンツとして何でも設定できることを意味します。文字列、数値、日付、その他のコントロール、画像、形状など、絶対に何でも。TextBlock
はstrings
のみを処理できます。
通常、ラベルは単一行のテキスト出力をサポートしますが、TextBlockは複数行のテキスト表示を目的としています。
たとえば、wpfのTextBlockには、複数行入力を可能にするTextWrapping
プロパティがあります。ラベルにはこれがありません。
TextBlockとLabelは両方ともテキストを表示するために使用されますが、裏ではまったく異なります。
=> ラベルは、ContentControlを継承します。これは、考えられるほぼすべてのUIの表示を可能にする基本クラスです。
=> TextBlock、一方、FrameworkElementから直接継承するため、すべてに共通する動作を逃しますControlから継承する要素。 TextBlockの浅い継承階層により、コントロールはLabelよりも軽量になり、よりシンプルで非インタラクティブなシナリオにより適しています。
PS:ただし、アクセスキーを使用したい場合、またはより柔軟なまたはグラフィカルなデザインが必要な場合は、Labelを使用する必要があります。