Theo Phát triển ứng dụng Windows với Bộ đào tạo Microsoft .NET 4 70-511
Sự khác biệt giữa Label
điều khiển và TextBlock
điều khiển vì cả hai đều là điều khiển nội dung và chỉ hiển thị văn bản?
Theo Phát triển ứng dụng Windows với Bộ đào tạo Microsoft .NET 4 70-511
Sự khác biệt giữa Label
điều khiển và TextBlock
điều khiển vì cả hai đều là điều khiển nội dung và chỉ hiển thị văn bản?
Câu trả lời:
Mặc dù TextBlock
sống trong không gian tên System.Windows.Controls, nó không phải là một điều khiển. Nó xuất phát trực tiếp từ FrameworkElement
. Nhãn, mặt khác, xuất phát từ ContentControl
. Điều này có nghĩa là Label
có thể:
Template
tài sản).Content
tính).DataTemplate
cho nội dung của nó (thông qua ContentTemplate
tài sản).Làm bất cứ điều gì khác a ContentControl
có thể làm điều đó FrameworkElement
không thể.
Label
văn bản có màu xám khi bị vô hiệu hóaLabel
hỗ trợ các phím truy cậpLabel
nặng hơn nhiều TextBlock
Một số bài đọc thú vị dưới đây
Các nhãn thường hỗ trợ đầu ra văn bản một dòng trong khi TextBlock dành cho hiển thị văn bản nhiều dòng.
Ví dụ, trong wpf TextBlock có một thuộc tính TextWrapping
cho phép đầu vào đa dòng; Nhãn không có cái này.
Label
là ContentControl
có nghĩa là bạn có thể đặt bất cứ điều gì như một nội dung cho nó. Hoàn toàn bất cứ điều gì bao gồm chuỗi, số, ngày, điều khiển khác, hình ảnh, hình dạng, vv chỉ TextBlock
có thể xử lý strings
.
Mặc dù TextBlock và Nhãn đều được sử dụng để hiển thị văn bản, nhưng chúng khá khác nhau dưới bìa.
=> Nhãn kế thừa từ ContentControl , một lớp cơ sở cho phép hiển thị hầu hết mọi giao diện người dùng có thể tưởng tượng được.
=> TextBlock , mặt khác, kế thừa trực tiếp từ FrameworkEuity , do đó bỏ lỡ hành vi phổ biến đối với tất cả các thành phần kế thừa từ Control. Hệ thống phân cấp kế thừa nông của TextBlock giúp điều khiển có trọng lượng nhẹ hơn Nhãn và phù hợp hơn với các kịch bản đơn giản hơn, không tương tác.
PS: Tuy nhiên, nếu bạn muốn các phím truy cập hoạt động hoặc muốn thiết kế đồ họa hoặc linh hoạt hơn, bạn sẽ cần sử dụng Nhãn.
Có lẽ tính năng khó chịu nhất TextBlock
là hành vi tra cứu kiểu ngầm định, chỉ nằm trong phạm vi gần nhất DataTemplate
. Đây là một hành vi mặc định cho các Control
yếu tố không 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>
Mang lại kết quả của:
Bạn có thể đọc thêm về nó ở đây .