Microsoft .NET 4 70-511 Training Kit 를 사용한 Windows 응용 프로그램 개발 에 따르면
컨텐츠 컨트롤과 텍스트 만 표시되므로 Label
컨트롤과 TextBlock
컨트롤 의 차이점은 무엇입니까 ?
Microsoft .NET 4 70-511 Training Kit 를 사용한 Windows 응용 프로그램 개발 에 따르면
컨텐츠 컨트롤과 텍스트 만 표시되므로 Label
컨트롤과 TextBlock
컨트롤 의 차이점은 무엇입니까 ?
답변:
비록 TextBlock
System.Windows.Controls의 삶 네임 스페이스, 그것을 제어하지 않습니다. 에서 직접 파생됩니다 FrameworkElement
. 반면에 레이블은에서 파생됩니다 ContentControl
. 이는 다음을 수행 Label
할 수 있음을 의미합니다 .
Template
속성을 통해 사용자 지정 컨트롤 템플릿을 제공하십시오 .Content
속성 이외의 문자열 이외의 데이터를 표시합니다 .DataTemplate
( ContentTemplate
속성을 통해 ) 내용에 a 를 적용하십시오 .어떤 다른을 마 ContentControl
A는 그렇게 할 수 FrameworkElement
없습니다.
Label
비활성화되면 텍스트가 회색으로 표시됩니다Label
액세스 키 지원Label
보다 무겁다 TextBlock
아래에 좀 더 흥미로운 읽을 거리
레이블은 일반적으로 한 줄 텍스트 출력을 지원하지만 TextBlock은 여러 줄 텍스트 표시를위한 것입니다.
예를 들어 wpf에서 TextBlock에는 여러 줄 TextWrapping
입력을 가능하게 하는 속성 이 있습니다. 라벨에는 없습니다.
Label
이다 ContentControl
이는 당신이 그것을위한 콘텐츠로 무엇이든 설정할 수 있다는 것을 의미한다. 문자열, 숫자, 날짜, 기타 컨트롤, 이미지, 도형 등을 포함한 모든 것은 TextBlock
처리 할 수 있습니다 strings
.
TextBlock과 Label은 모두 텍스트를 표시하는 데 사용되지만 표지 아래에서는 상당히 다릅니다.
=> Label 은 상상할 수있는 거의 모든 UI를 표시 할 수있는 기본 클래스 인 ContentControl 에서 상속 합니다.
반면에 => TextBlock 은 FrameworkElement 에서 직접 상속 하므로 Control에서 상속되는 모든 요소에 공통적 인 동작이 누락됩니다. TextBlock의 얕은 상속 계층 구조는 컨트롤을 Label보다 가벼워 단순하고 비대화 형 시나리오에 더 적합합니다.
추신 : 그러나 액세스 키 가 작동하거나보다 유연하거나 그래픽적인 디자인을 원하면 레이블을 사용해야합니다.
아마도 가장 성가신 특징은 TextBlock
암시 적 스타일 조회 동작이며, 가장 가까운 범위에만 속합니다 DataTemplate
. 이것은 Control
xaml 이 아닌 요소 의 기본 동작입니다 .
<StackPanel Orientation="Vertical">
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
</Style>
<Style TargetType="Label">
<Setter Property="Foreground" Value="Red"/>
</Style>
</StackPanel.Resources>
<ContentControl Content="Test">
<ContentControl.ContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
<ContentControl Content="Test">
<ContentControl.ContentTemplate>
<DataTemplate>
<Label Content="{Binding}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</StackPanel>
결과는 다음과 같습니다.