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ù TextBlocksố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à Labelcó thể:
Templatetài sản).Contenttính).DataTemplatecho nội dung của nó (thông qua ContentTemplatetài sản).Làm bất cứ điều gì khác a ContentControlcó thể làm điều đó FrameworkElementkhô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 TextBlockMộ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 TextWrappingcho phép đầu vào đa dòng; Nhãn không có cái này.
Labellà ContentControlcó 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ỉ TextBlockcó 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 TextBlocklà 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 Controlyế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 .