लेबल और टेक्स्टब्लॉक के बीच अंतर


132

Microsoft .NET 4 70-511 प्रशिक्षण किट के साथ विंडोज एप्लिकेशन डेवलपमेंट के अनुसार

Labelनियंत्रण और TextBlockनियंत्रण के बीच अंतर क्या है क्योंकि दोनों सामग्री नियंत्रण हैं और केवल पाठ प्रदर्शित कर रहे हैं?


1
सिल्वरलाइट में लेबल कंट्रोल वैलिडेशन के बाद अपने आप बदल जाता है (टेक्स्ट बेजम्स रेड)। लेकिन WPF अलग है।
२०:०२ पर भंवरवल्फा

जवाबों:


215

टेक्स्टब्लॉक एक नियंत्रण नहीं है

भले ही TextBlockSystem.Windows.Controls नाम स्थान में रहता है, यह एक नियंत्रण नहीं है। यह सीधे से प्राप्त होता है FrameworkElement। दूसरी ओर, लेबल से प्राप्त होता है ContentControl। इसका मतलब यह है कि Labelकर सकते हैं:

  1. एक कस्टम नियंत्रण टेम्पलेट ( Templateसंपत्ति के माध्यम से ) दिया जाए।
  2. केवल एक स्ट्रिंग ( Contentसंपत्ति के माध्यम से ) के अलावा अन्य डेटा प्रदर्शित करें ।
  3. DataTemplateइसकी सामग्री ( ContentTemplateसंपत्ति के माध्यम से ) पर लागू करें ।
  4. जो कुछ भी ContentControlकर सकता है वह करो FrameworkElement

    • Label पाठ अक्षम होने पर धूसर हो जाता है
    • Label पहुँच कुंजी का समर्थन करता है
    • Label से बहुत भारी है TextBlock

स्रोत

कुछ और दिलचस्प नीचे पढ़ता है


1
अपने दूसरे बिंदु पर: किसी टेक्स्टबलॉक पर डेटटाइम को बांधना संभव है।
विषम राशी

26

लेबल आमतौर पर सिंगल लाइन टेक्स्ट आउटपुट का समर्थन करते हैं जबकि टेक्स्टब्लॉक मल्टीलाइन टेक्स्ट डिस्प्ले के लिए है।

उदाहरण के लिए wpf में TextBlock के पास एक गुण है TextWrappingजो मल्टीलाइन इनपुट को सक्षम करता है; लेबल में यह नहीं है।


4
लेबल में एक मनमानी सामग्री गुण है। यह एक स्ट्रिंग हो सकता है, लेकिन यह एक टेक्स्टब्लॉक (या कोई अन्य नियंत्रण) भी हो सकता है, इसलिए सामग्री के रूप में टेक्स्टब्लॉक का उपयोग करके लेबल को बहुस्तरीय किया जा सकता है।
जिम बेल्टर

26

Labelहै ContentControlजिसका अर्थ है आप इसके लिए एक सामग्री के रूप में कुछ भी सेट कर सकते हैं कि। तार, संख्या, दिनांक, अन्य नियंत्रण, चित्र, आकार आदि सहित बिल्कुल कुछ भी TextBlockकेवल संभाल सकते हैं strings


3
"अन्य नियंत्रण" में एक टेक्स्टब्लॉक शामिल है, इसलिए एक लेबल में उदाहरण के लिए लिपटा हुआ पाठ शामिल हो सकता है।
जिम बेल्टर

9

यद्यपि टेक्स्टब्लॉक और लेबल दोनों का उपयोग पाठ प्रदर्शित करने के लिए किया जाता है, वे आवरण के नीचे काफी भिन्न होते हैं।

=> लेबल ContentControl से विरासत में मिला , एक आधार वर्ग जो लगभग किसी भी यूआई की कल्पना को प्रदर्शित करने में सक्षम बनाता है।

=> टेक्स्टब्लॉक , दूसरी ओर, सीधे फ्रेमवर्क से विरासत में मिला है , इस प्रकार व्यवहार से गायब है जो नियंत्रण से विरासत में मिले सभी तत्वों के लिए सामान्य है। टेक्स्टब्लॉक की उथली विरासत पदानुक्रम लेबल की तुलना में नियंत्रण हल्का वजन बनाता है और सरल, निर्बाध परिदृश्यों के लिए बेहतर अनुकूल है।

पुनश्च: हालाँकि, यदि आप काम करने के लिए पहुँच कुंजी चाहते हैं या अधिक लचीली या चित्रमय डिज़ाइन चाहते हैं, तो आपको लेबल का उपयोग करना होगा।


0

संभवतः सबसे कष्टप्रद विशेषता 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>

का परिणाम देता है:

यहाँ छवि विवरण दर्ज करें

आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.