c# - मैं WPF का उपयोग कर लेबल में टेक्स्ट कैसे लपेट सकता हूं?




.net label (6)

मेरे पास TextBox और लेबल है। बटन क्लिक करने के बाद, मैं निम्न कोड निष्पादित करता हूं:

 label1.Content = textbox1.Text; 

मेरा सवाल है, मैं लेबल के टेक्स्ट रैपिंग को कैसे सक्षम करूं? एक पंक्ति पर प्रदर्शित करने के लिए बहुत अधिक टेक्स्ट हो सकता है, और यदि यह मामला है तो मैं इसे स्वचालित रूप से एकाधिक लाइनों में लपेटना चाहता हूं।


अक्सर आप TextBlock साथ Label को प्रतिस्थापित नहीं कर सकते हैं क्योंकि आप Target संपत्ति का उपयोग करना चाहते हैं (जो नीचे दिए गए नमूना कोड में कीबोर्ड जैसे ALT + C का उपयोग करते समय लक्षित नियंत्रण पर ध्यान केंद्रित करता है), क्योंकि यह सब Label वास्तव में एक पर प्रदान करता है TextBlock

हालांकि, एक Label टेक्स्ट प्रस्तुत करने के लिए TextBlock का उपयोग करता है (यदि Content स्ट्रिंग में एक स्ट्रिंग रखा गया है, जो यह आमतौर पर है); इसलिए, आप Label अंदर TextBlock लिए एक शैली जोड़ सकते हैं जैसे:

<Label              
    Content="_Content Text:"
    Target="{Binding ElementName=MyTargetControl}">
    <Label.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="TextWrapping" Value="Wrap" />
        </Style>
    </Label.Resources>
 </Label>
 <CheckBox x:Name = "MyTargetControl" />

इस तरह आप पाठ को लपेटने में सक्षम होने पर Label की कार्यक्षमता को बनाए रखने के लिए भी मिलता है।


आप लेबल के अंदर टेक्स्टब्लॉक डाल सकते हैं:

<Label> 
  <TextBlock Text="Long Text . . . ." TextWrapping="Wrap" /> 
</Label> 

मैंने निम्नलिखित कोड का इस्तेमाल किया।

    <Label>
        <Label.Content>
            <AccessText TextWrapping="Wrap" Text="xxxxx"/>
        </Label.Content>
    </Label>

लेबल क्लास का उपयोग करने के बजाय, मैं TextBlock का उपयोग करने की सलाह TextBlock । यह आपको TextWrapping उचित रूप से सेट करने की अनुमति देता है।

आप हमेशा कर सकते हैं:

 label1.Content = new TextBlock() { Text = textBox1.Text, TextWrapping = TextWrapping.Wrap };

हालांकि, यदि यह सभी "लेबल" टेक्स्ट प्रदर्शित करना है, तो इसके बजाय TextBlock उपयोग करें।


हमें किसी प्रकार का नियंत्रण रखना होगा जो टेक्स्टब्लॉक / टेक्स्टबॉक्स जैसे टेक्स्ट को लपेट सकता है

 <Label Width="120" Height="100" >
        <TextBlock TextWrapping="Wrap">
            this is a very long text inside a textblock and this needs to be on multiline.
        </TextBlock>
    </Label>

Label नियंत्रण सीधे WPF में टेक्स्ट रैपिंग का समर्थन नहीं करता है। आपको इसके बजाय TextBlock उपयोग करना चाहिए। (बेशक, यदि आप चाहें तो आप Label नियंत्रण के अंदर TextBlock सकते हैं।)

नमूना कोड:

<TextBlock TextWrapping="WrapWithOverflow">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec adipiscing
    nulla quis libero egestas lobortis. Duis blandit imperdiet ornare. Nulla
    ac arcu ut purus placerat congue. Integer pretium fermentum gravida.
</TextBlock>






textwrapping