Microsoft .NET 4 70-511 प्रशिक्षण किट के साथ विंडोज एप्लिकेशन डेवलपमेंट के अनुसार
Labelनियंत्रण और TextBlockनियंत्रण के बीच अंतर क्या है क्योंकि दोनों सामग्री नियंत्रण हैं और केवल पाठ प्रदर्शित कर रहे हैं?
Microsoft .NET 4 70-511 प्रशिक्षण किट के साथ विंडोज एप्लिकेशन डेवलपमेंट के अनुसार
Labelनियंत्रण और TextBlockनियंत्रण के बीच अंतर क्या है क्योंकि दोनों सामग्री नियंत्रण हैं और केवल पाठ प्रदर्शित कर रहे हैं?
जवाबों:
भले ही TextBlockSystem.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। यह गैर Controlxaml तत्वों के लिए एक डिफ़ॉल्ट व्यवहार है ।
<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>
का परिणाम देता है:
आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं ।