Microsoft .NET 4 70-511 प्रशिक्षण किट के साथ विंडोज एप्लिकेशन डेवलपमेंट के अनुसार
Label
नियंत्रण और TextBlock
नियंत्रण के बीच अंतर क्या है क्योंकि दोनों सामग्री नियंत्रण हैं और केवल पाठ प्रदर्शित कर रहे हैं?
Microsoft .NET 4 70-511 प्रशिक्षण किट के साथ विंडोज एप्लिकेशन डेवलपमेंट के अनुसार
Label
नियंत्रण और TextBlock
नियंत्रण के बीच अंतर क्या है क्योंकि दोनों सामग्री नियंत्रण हैं और केवल पाठ प्रदर्शित कर रहे हैं?
जवाबों:
भले ही TextBlock
System.Windows.Controls नाम स्थान में रहता है, यह एक नियंत्रण नहीं है। यह सीधे से प्राप्त होता है FrameworkElement
। दूसरी ओर, लेबल से प्राप्त होता है ContentControl
। इसका मतलब यह है कि Label
कर सकते हैं:
Template
संपत्ति के माध्यम से ) दिया जाए।Content
संपत्ति के माध्यम से ) के अलावा अन्य डेटा प्रदर्शित करें ।DataTemplate
इसकी सामग्री ( ContentTemplate
संपत्ति के माध्यम से ) पर लागू करें ।जो कुछ भी ContentControl
कर सकता है वह करो FrameworkElement
।
Label
पाठ अक्षम होने पर धूसर हो जाता हैLabel
पहुँच कुंजी का समर्थन करता हैLabel
से बहुत भारी है TextBlock
कुछ और दिलचस्प नीचे पढ़ता है
लेबल आमतौर पर सिंगल लाइन टेक्स्ट आउटपुट का समर्थन करते हैं जबकि टेक्स्टब्लॉक मल्टीलाइन टेक्स्ट डिस्प्ले के लिए है।
उदाहरण के लिए wpf में TextBlock के पास एक गुण है TextWrapping
जो मल्टीलाइन इनपुट को सक्षम करता है; लेबल में यह नहीं है।
Label
है ContentControl
जिसका अर्थ है आप इसके लिए एक सामग्री के रूप में कुछ भी सेट कर सकते हैं कि। तार, संख्या, दिनांक, अन्य नियंत्रण, चित्र, आकार आदि सहित बिल्कुल कुछ भी TextBlock
केवल संभाल सकते हैं strings
।
यद्यपि टेक्स्टब्लॉक और लेबल दोनों का उपयोग पाठ प्रदर्शित करने के लिए किया जाता है, वे आवरण के नीचे काफी भिन्न होते हैं।
=> लेबल ContentControl से विरासत में मिला , एक आधार वर्ग जो लगभग किसी भी यूआई की कल्पना को प्रदर्शित करने में सक्षम बनाता है।
=> टेक्स्टब्लॉक , दूसरी ओर, सीधे फ्रेमवर्क से विरासत में मिला है , इस प्रकार व्यवहार से गायब है जो नियंत्रण से विरासत में मिले सभी तत्वों के लिए सामान्य है। टेक्स्टब्लॉक की उथली विरासत पदानुक्रम लेबल की तुलना में नियंत्रण हल्का वजन बनाता है और सरल, निर्बाध परिदृश्यों के लिए बेहतर अनुकूल है।
पुनश्च: हालाँकि, यदि आप काम करने के लिए पहुँच कुंजी चाहते हैं या अधिक लचीली या चित्रमय डिज़ाइन चाहते हैं, तो आपको लेबल का उपयोग करना होगा।
संभवतः सबसे कष्टप्रद विशेषता 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>
का परिणाम देता है:
आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं ।