WPF टेक्स्टब्लॉक, टेक्स्ट विशेषता में लाइनब्रेक


96

वहाँ एक रास्ता \nबनाने के लिए एक लाइन में ब्रेक है TextBlock?

<TextBlock Text="line1\nLine2" />

या Textविशेषता के अंदर एक मध्य रेखा को तोड़ने के लिए एक बेहतर तरीका है ?

<LineBreak />

यह मेरे लिए काम नहीं करता है, यह Textविशेषता का मूल्य होना चाहिए , क्योंकि पाठ स्ट्रिंग एक बाहरी स्रोत से सेट किया जा रहा है।

मैं परिचित हूं LineBreakलेकिन इसका जवाब नहीं है जिसकी मुझे तलाश है।


2
xaml में आपको नियंत्रण वर्णों का उपयोग करना है <TextBlock Name = "txtBlock" पाठ = "Line1 & # 10; Line2" />, यदि आप \ n वर्ण का उपयोग करना चाहते हैं तो यह txtBlock .ext = "line1 \ nline2" के पीछे कोड से काम करता है। ";
JJ_Coder4Hire

& # 10; xaml में ठीक काम करता है। धन्यवाद JJ_Coder4Hire!
काय ली

जवाबों:


116

मुझे पता है कि यह एक पुराने सवाल को खारिज कर रहा है, लेकिन मुझे भी यही समस्या थी। मेरे लिए समाधान HTML एन्कोडेड लाइन फीड ( &amp;#10;) का उपयोग करना था ।

Line1&amp;#10;Line2

जैसा दिखता है

लाइन 1
लाइन 2

HTML से अधिक एन्कोडेड वर्णों की जाँच करें w3schools देखें


19
@Knasterbax यदि पाठ के बीच सामग्री के रूप में निर्दिष्ट किया गया है <TextBlock>और </TextBlock>फिर हाँ, आपको आवश्यकता होगी <LineBreak/>। विशेषता के &#10;अंदर काम करता है Text:<TextBlock Text="..." />
रोमन स्टार्कोव

6
"& # 10;" मेरे लिए काम किया। मुझे "& amp;" की आवश्यकता नहीं थी यद्यपि उल्लेख किया गया है। पाठ को सेट करते समय यह विधि भी काम करेगी: <सेटर प्रॉपर्टी = "टेक्स्ट" मान = "पंक्ति 1 & # 10; & # 10; पंक्ति 2" />
एडवर्ड एम

126

इसे इस्तेमाल करे:

<TextBlock>
    line1
    <LineBreak />
    line2
</TextBlock>

1
यह सीधे कोशिश नहीं की है, लेकिन मेरे सिर के ऊपर से आप xml की कोशिश कर सकते हैं: अंतरिक्ष = "संरक्षित" और फिर सीधे पाठ संपत्ति में लाइन ब्रेक एम्बेड करें।
पॉल अलेक्जेंडर

3
पूंजीकरण मामलें। यह <LineBreak /> है।
एम। डडले 18

10

सबसे आसान तरीका है

<TextBlock> blabla <LineBreak /> coucou <LineBreak /> coucou 2 </TextBlock>

तो आप बस XAML कोड लिखें, और इसका HTML में <LineBreak />बिल्कुल वही अर्थ है
या C # में "\ n" है।


1
पॉल अलेक्जेंडर का डुप्लीकेट उत्तर।
वाप्गुगी

7

3
स्कॉट मैं आपकी टिप्पणी नहीं समझता।
जेकलूम

1
समस्या यह है कि <LineBreak /> Windows XP पर काम नहीं करता है। यह भी स्थापित .NET संस्करण के साथ कुछ करने के लिए हो सकता है। कोई अपवाद नहीं हैं और दृश्य तत्वों के अलावा कोई भी त्रुटि सही ढंग से प्रदर्शित नहीं होती है।
चार्ल्स


5

यदि यह किसी संग्रह के अंदर है जैसे ग्रिड या स्टैकपैनल, तो लाइनब्रीक /> काम नहीं करेगा। ऐसे मामलों में निम्न दिखाए गए अनुसार काम करेंगे:

एक संग्रह के अंदर लाइनब्रीक


मैंने एक रेडियोबटन के लिए सामग्री के रूप में यह कोशिश की। विंडोज 7 पर प्रोग्राम चलाने तक सब कुछ ठीक लग रहा था। विंडोज़ 7 पर बटन दो लाइनों के बीच लंबवत केंद्रित था। विंडोज 10 डिफ़ॉल्ट रूप से बटन शीर्ष को संरेखित करता है। जबकि विंडोज 10 वर्टिकलकंटेंटलीमेंट प्रॉपर्टी का सम्मान करेगा, विंडोज 7 इसे नजरअंदाज करता है। मुझे लाइनब्रेक समाधान का उपयोग करना था।
mrfelis

5

इसका उपयोग करने का सही तरीका निम्नलिखित हो सकता है:

<TextBlock>  
    <Span>text1</Span>  
    <LineBreak/>  
    <Span>text2</Span>  
</TextBlock>

3
  <HyperlinkButton 
        Content="Apply and restart this pplication!&#10;&#13;Note that modifying these settings requires the application to be restarted."   />

CRLF सरल तरीका = !&#10;&#13;

!&#10;&#13; - सभी wpf, xaml, सिल्वरलाइट कंट्रोल जैसे TextBlock, HyperlinkText और बहुत कुछ पर काम करें


1
(अपने अन्य उत्तर और ध्वज को ठीक करने के लिए इसे ठीक न करें)

3

यदि आप TextBlock के टेक्स्ट को बाइंड कर रहे हैं, तो अन्य उत्तरों में से कोई भी काम नहीं करता है। जहाँ आप तोड़ना चाहते हैं, उस बाइंडिंग टेक्स्ट में बस '\ n' जोड़ें।



1

बस AccessText नियंत्रण का उपयोग करें। आप इसे एक लेबल की तरह उपयोग कर सकते हैं और आपके पास संपत्ति TextWrapping = "WrapWithOverflow" है

जैसे।

मेरा ऐसा ही है और यह ठीक काम कर रहा है। इसके अलावा, आपको पाठ को व्यावहारिक रूप से बदलने पर कोई समस्या नहीं है।


1

मुझे पार्टी के लिए देर हो रही है लेकिन .. यह कमोबेश यह है कि मैंने इसे कैसे किया, (मेरे आइटम स्रोत सादे तार हैं, स्वरूपित नहीं हैं, और मुझे कुछ भी 'कन्वर्ट' करने की आवश्यकता नहीं है)

public class SpaceToLineBreakConverter : IValueConverter
{   
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {            
        return (!String.IsNullOrEmpty(value as string)) 
        ? new Regex(@"\s").Replace(value as string, "\n") 
        : value;            
    }

    public object ConvertBack(object value, Type targetType, object parameter,System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

0

मुझे एक समान समस्या हो रही थी और एक टेक्स्टब्लॉक के लिए स्टैमल ऑफ एक्समेल मार्कअप को बांधना चाहता था। आवश्यक रूप से बाद में उपयोग के लिए एक स्ट्रिंग में एक TextBlock के अंदर घोषणात्मक मार्कअप को संग्रहीत करना।

यह मैंने कैसे किया : मैंने इनलाइन कॉलेक्शन को बाइंडेबल बनाने के लिए टेक्स्टब्लॉक को उपखंडित किया और स्ट्रिंग और इनलाइनकॉलिनेशन (या वास्तव में इनलाइन की एक सामान्य सूची) के बीच एक कन्वर्टर लिखा।


0

यह &amp;#10;मेरे लिए काम नहीं करता था, जब मैं बाध्यकारी का उपयोग करता था। लेकिन यह काम करता है:

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