স্ট্রিং অ্যাট্রিবিউটে নিউলাইন


283

পাঠ্যটিতে একটি লাইন বিরতি কীভাবে যুক্ত করতে পারি যখন এটি কোনও অ্যাট্রিবিউট হিসাবে সেট করা হয়:

<TextBlock Text="Stuff on line1 \n Stuff on line2" />

এটিকে বিস্ফোরিত বিন্যাসে ভাঙ্গা আমার বিশেষ পরিস্থিতির জন্য কোনও বিকল্প নয়। আমার যা দরকার তা হল নিম্নলিখিত অনুকরণের কিছু উপায়:

<TextBlock>
  <TextBlock.Text>
    Stuff on line1 <LineBreak/>
    Stuff on line2
  </TextBlock.Text>
<TextBlock/>

উত্তর:


553
<TextBlock Text="Stuff on line1&#x0a;Stuff on line 2"/>

আক্ষরিক উপস্থাপন করতে আপনি যে কোনও হেক্সাডেসিমাল এনকোডেড মানটি ব্যবহার করতে পারেন। এই ক্ষেত্রে, আমি লাইন ফিড (চর 10) ব্যবহার করেছি। আপনি যদি "ক্লাসিক" করতে চান vbCrLfতবে আপনি ব্যবহার করতে পারেন&#x0d;&#x0a;

যাইহোক, সিনট্যাক্সটি নোট করুন: এটি এম্পারস্যান্ড, এক পাউন্ড, অক্ষর এক্স , তারপরে আপনি যে চরিত্রটি চান তার হেক্স মান এবং শেষ পর্যন্ত একটি আধা-কোলন।

ALSO: সম্পূর্ণতার জন্য, আপনি এমন কোনও পাঠ্যকে আবদ্ধ করতে পারেন যা ইতিমধ্যে আপনার কোডের পিছনে থাকা ধ্রুবকের মতো লাইন ফিডগুলি এম্বেড করেছে বা রানটাইম সময়ে নির্মিত একটি ভেরিয়েবল।


14
স্পষ্টতই এটি <টেক্সটব্লক। পাঠ্য </ TextBlock.Text> ট্যাগের মধ্যে কাজ করে না।
tcables

45
আজ অবধি, এই উত্তরের আমার 34 টি আপত্তি আছে এবং আমার এখনও ফিরে এসে পরীক্ষা করে দেখতে হয়েছিল কারণ বাক্য গঠনটি ততটা প্রত্নতাত্ত্বিক।
বব কিং

3
একেবারে। আমি এই বুকমার্ক আছে। আমাকে সব সময় এটি পরীক্ষা করে আসতে হবে।
মোজো ফিল্টার

4
'প্রাচীন' ==> 'রহস্যময়' :-)
উইল ডিন

5
এমনকি একটি বাঁধাই প্যারামিটার যখন মত একটি ব্যাকস্ল্যাশ যোগ ভিতরে কাজ করে: ConverterParameter = 'টেস্ট \ & # x0a; টেক্সট'
সেভেন

72

আপনি কি এক্সএমএল: স্পেস = উত্স = উত্স "উত্সের সাদা অংশ সংরক্ষণের জন্য ব্যবহার করতে পারেন

<TextBlock xml:space="preserve">
Stuff on line 1
Stuff on line 2
</TextBlock>

8
আপনি এক্সএমএল: স্পেস = "সংরক্ষণ করুন" এবং লাইনগুলির মধ্যে <লাইনব্রেক /> যোগ করতে পারেন
দরকারী

5
এটি লক্ষ করা উচিত (কয়েক বছর পরে) যা xml:space="preserve"ইনডেন্ট স্পেসগুলিও রাখবে, যা সাধারণত এক্সএএমএল উপস্থিত থাকে। সুতরাং <LineBreak />উপরে বর্ণিত হিসাবে একটি স্পষ্টতই একটি পরিষ্কার সমাধান বলে মনে হচ্ছে।
জিউস

ধন্যবাদ! এই সমাধানটি আমার এক্সএএমএল-ভিত্তিক সিরিয়ালাইজেশন কোডটিতে খুব ভালভাবে লাগিয়েছে।
সেরফিম

ওহ এটি নিখুঁত কাজ করেছে। এটি আমাকে এত বেশি বয়লার প্লেট কোড সংরক্ষণ করেছে। ধন্যবাদ
আইএএম। ক্যারোট

57

যখন আপনার এটি স্ট্রিংয়ে করা দরকার (যেমন: আপনার সংস্থানগুলিতে) আপনাকে ব্যবহার করতে হবে xml:space="preserve" এবং এম্পারস্যান্ড অক্ষর কোডগুলি:

<System:String x:Key="TwoLiner" xml:space="preserve">First line&#10;Second line</System:String>

বা পাঠ্যে আক্ষরিক নতুনলাইনগুলি:

<System:String x:Key="TwoLiner" xml:space="preserve">First line 
Second line</System:String>

সতর্কতা: আপনি যদি দ্বিতীয় উদাহরণের মতো কোড লিখেন তবে আপনি প্রবেশ করিয়েছেন পারেন , একটি newline, অথবা একটি গাড়ি ফেরত এবং সম্পর্কে newline আপনার অপারেটিং সিস্টেম এবং / অথবা টেক্সট এডিটর ব্যবহার লাইন শেষা w শ উপর নির্ভর করে। উদাহরণস্বরূপ, আপনি যদি এটি লিখেন এবং এটি একটি লিনাক্স সিস্টেম থেকে গিট করার জন্য প্রতিশ্রুতিবদ্ধ করেন তবে সবকিছু ঠিকঠাক মনে হতে পারে - তবে যদি কেউ এটি উইন্ডোজে ক্লোন করেন তবে git আপনার লাইনের শেষটিকে রূপান্তর করবে \r\nএবং আপনার স্ট্রিংটি কী তার উপর নির্ভর করে ... আপনি পৃথিবী ভাঙ্গতে পারে।

আপনি যখন হোয়াইটস্পেস সংরক্ষণ করছেন তখন কেবল সে সম্পর্কে সচেতন হন। আপনি যদি এই জাতীয় কিছু লিখেন:

<System:String x:Key="TwoLiner" xml:space="preserve">
First line 
Second line 
</System:String>

আপনি প্রকৃতপক্ষে চারটি লাইন বিরতি, সম্ভবত চারটি ক্যারেজ-রিটার্ন এবং অদৃশ্যভাবে সম্ভাব্য সাদা স্থানকে পিছনে রেখেছেন ...


10
বিটিডাব্লু, আপনি কেবলমাত্র xml:space="preserve"এট্রিবিউটটি প্রয়োগ করতে পারেন ResourceDictionary, যাতে আপনার এটি প্রতিটি সংস্থান স্ট্রিংয়ে প্রয়োগ করার প্রয়োজন হয় না।
ocodo

1
অ্যাম্পারস্যান্ড ছাড়াও কাজ করে। এর মতো কিছু: <System:String x:Key="TwoLiner" xml:space="preserve">First line Second line</System:String> (প্রথম লাইন এবং দ্বিতীয় লাইনের মধ্যে একটি লাইন বিরতি সহ)
ভ্যাগলেটস

1
আমি আশা করি আমি আপনাকে +10 এর জন্য দিতে পারিxml:space="preserve"
তীমথিয়

1
@ ট্রুপার আমি সবেমাত্র সম্পাদনা করেছি এবং এটি জয়কুল / মোডের অনুমোদনের উপরে ছেড়ে দেওয়া হয়েছে। এবং জাইকুলের আরও বিল্ডসগুলি এখানে এখানে ছোটখাটো বিশদটি স্পষ্ট করে জানিয়েছে (যেহেতু আমার সম্পাদনাটি পছন্দসইভাবে পছন্দসই ফলাফল দেয় নি)। সামগ্রিকভাবে আমি বলব এই ইন্টারঅ্যাকশনটি আমার নিজের পোস্টের চেয়ে আরও ভাল উত্তর তৈরি করতে সহায়তা করে।
অ্যান্টনি লুসার্দি

21

আপনাকে <TextBlock.Text>কেবল আপনার সামগ্রীগুলি সরিয়ে এবং কেবল নিম্নলিখিত হিসাবে যুক্ত করতে হবে:

    <Grid Margin="20">
        <TextBlock TextWrapping="Wrap" TextAlignment="Justify" FontSize="17">
        <Bold FontFamily="Segoe UI Light" FontSize="70">I.R. Iran</Bold><LineBreak/>
        <Span FontSize="35">I</Span>ran or Persia, officially the <Italic>Islamic Republic of Iran</Italic>, 
        is a country in Western Asia. The country is bordered on the 
        north by Armenia, Azerbaijan and Turkmenistan, with Kazakhstan and Russia 
        to the north across the Caspian Sea.<LineBreak/>
        <Span FontSize="10">For more information about Iran see <Hyperlink NavigateUri="http://en.WikiPedia.org/wiki/Iran">WikiPedia</Hyperlink></Span>
            <LineBreak/>
            <LineBreak/>
            <Span FontSize="12">
                <Span>Is this page helpful?</Span>
                <Button Content="No"/>
                <Button Content="Yes"/>
            </Span>
    </TextBlock>
    </Grid>

এখানে চিত্র বর্ণনা লিখুন


এবং প্রশ্নটি ছিল " যখন আমি কোনও বৈশিষ্ট্য হিসাবে সেট করা হচ্ছে তখন পাঠ্যের সাথে একটি লাইন ব্রেকটি কীভাবে যুক্ত করব ", বৈশিষ্ট্য, উপাদান হিসাবে নয়।
মিনিট

15

নোট করুন যে এটি করতে আপনার পাঠ্য বৈশিষ্ট্যে এটি করা দরকার আপনি সামগ্রীটি পছন্দ করতে পারবেন না

<TextBlock>Stuff on line1&#x0a;Stuff on line 2</TextBlock>

12

হয়তো কেউ পছন্দ করেন

<TextBlock Text="{Binding StringFormat='Stuff on line1{0}Stuff on line2{0}Stuff on line3',
                          Source={x:Static s:Environment.NewLine}}" />

সঙ্গে xmlns:s="clr-namespace:System;assembly=mscorlib"


যদিও যোগ করা হচ্ছে & # x0a; XAML থেকে কাজ করে বলে মনে হচ্ছে, এটি কোড থেকে নয়। এই এক না।
এফডিএফ

11

যারা এই প্রশ্নের প্রতিটি উত্তর চেষ্টা করেছেন এবং এখনও রয়েছেন তাদের জন্য তাদের মাথা আঁচড়ান যে কেন তাদের কেউ আপনার পক্ষে কাজ করে না, আপনি যে সমস্যার মধ্যে পড়েছেন তার কোনও ফর্ম আপনি নিয়ে যেতে পারেন।

আমার TextBlock.Textসম্পত্তিটি কোনও ToolTipService.ToolTipউপাদানটির অভ্যন্তরে ছিল এবং এটি কোনও এমন কোনও জিনিসের সম্পত্তিতে ডেটবাউন্ড ছিল যার ডেটা একটি এসকিউএল সঞ্চিত প্রক্রিয়া থেকে টানা হচ্ছে। এখন সঞ্চিত পদ্ধতির মধ্যে এই নির্দিষ্ট সম্পত্তি থেকে ডেটা একটি এসকিউএল ফাংশন থেকে টানছিল।

যেহেতু কিছুই আমার পক্ষে কাজ করে নি, তাই আমি আমার অনুসন্ধান ছেড়ে দিয়ে নীচে রূপান্তরকারী শ্রেণি তৈরি করেছি:

public class NewLineConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var s = string.Empty;

        if (value.IsNotNull())
        {
            s = value.ToString();

            if (s.Contains("\\r\\n"))
                s = s.Replace("\\r\\n", Environment.NewLine);

            if (s.Contains("\\n"))
                s = s.Replace("\\n", Environment.NewLine);

            if (s.Contains("&#x0a;&#x0d;"))
                s = s.Replace("&#x0a;&#x0d;", Environment.NewLine);

            if (s.Contains("&#x0a;"))
                s = s.Replace("&#x0a;", Environment.NewLine);

            if (s.Contains("&#x0d;"))
                s = s.Replace("&#x0d;", Environment.NewLine);

            if (s.Contains("&#10;&#13;"))
                s = s.Replace("&#10;&#13;", Environment.NewLine);

            if (s.Contains("&#10;"))
                s = s.Replace("&#10;", Environment.NewLine);

            if (s.Contains("&#13;"))
                s = s.Replace("&#13;", Environment.NewLine);

            if (s.Contains("<br />"))
                s = s.Replace("<br />", Environment.NewLine);

            if (s.Contains("<LineBreak />"))
                s = s.Replace("<LineBreak />", Environment.NewLine);
        }

        return s;
    }

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

@ Dparker এর উত্তরEnivornment.NewLine থেকে আমি পদ্ধতিটি ব্যবহার করতে পেরেছি । আমি রূপান্তরকারীকে একটি নতুন লাইনের যে কোনও সম্ভাব্য পাঠ্য উপস্থাপনা সন্ধান করার এবং এটির সাথে প্রতিস্থাপনের নির্দেশ দিয়েছিEnvironment.NewLine

এই কাজ!

যাইহোক, আমি এখনও হতবাক হয়েছি যে অন্য কোনও পদ্ধতির কেন ডেটাবাউন্ড বৈশিষ্ট্য নিয়ে কাজ করা হয়নি।

আমি @ ববকিংয়ের গৃহীত উত্তরে একটি মন্তব্য রেখেছি :

@ BobKing - কোনও এসকিউএল স্প্রোক থেকে এমবেডেড রেখার সাথে থাকা ক্ষেত্রের সাথে জড়িত থাকার সময় এটি টুলটিপসেসওয়ার্টুলটিপ-এ কাজ করবে বলে মনে হয় না।

তিনি এর সাথে জবাব দিলেন:

@ কোডমেভারিক যদি আপনি এম্বেড করা নতুন লাইনগুলির সাথে পাঠ্যের সাথে আবদ্ধ হন তবে সেগুলি সম্ভবত এক্সএমএল সেন্ডিনেল নয়, আসল চর 10 মান (বা 13 এর) হওয়া উচিত। এটি কেবলমাত্র যদি আপনি এক্সএএমএল ফাইলগুলিতে আক্ষরিক নতুন লাইন লিখতে চান।

একটা হালকা বাল্ব চলে গেল!

আমি আমার এসকিউএল ফাংশনে গিয়েছিলাম, আমার সাথে নতুন লাইনের পাঠ্য উপস্থাপনাগুলি প্রতিস্থাপন করেছি ...

CHAR( 13 ) + CHAR( 10 )

... আমার TextBlock.Textবাঁধাই থেকে রূপান্তরকারী সরানো , এবং ঠিক যেমন ... এটি কাজ করে!


9

আমি এটি সহায়ক খুঁজে পেয়েছি, তবে এটি এক্সএএমএলে একটি "সামগ্রী = ..." ট্যাগে যুক্ত করার সময় কিছু ত্রুটি নিয়ে ছুটে এসেছি।

আমার লিখিত সামগ্রীতে একাধিক লাইন ছিল এবং পরে আমি জানতে পেরেছিলাম যে সামগ্রীটি সাদা স্পেস রেখেছিল যদিও আমি এটি নির্দিষ্ট করে নেই। সুতরাং এটি ঘুরে দেখার জন্য এবং এটি শ্বেত স্পেসটিকে "উপেক্ষা" করার কারণে, আমি এ জাতীয় বাস্তবায়ন করেছি।

<ToolTip Width="200" Style="{StaticResource ToolTip}" 
         Content="'Text Line 1' 
                   &#x0a;&#x0d;'Text Line 2' 
                   &#x0a;&#x0d;'Text Line 3'"/>

আশাকরি এটি কাউকে সাহায্য করবে.

(আউটপুটে তিনটির মধ্যে প্রতিটি ফাঁকা রেখা সহ পাঠ্য রেখা রয়েছে।)


আপনি <টুল টিপ> <টুলটিপ.সন্টেন্ট> <টেক্সটব্লক পাঠ্য = '.....' /> </ টুলটিপ.সন্টেন্ট> </ToolTip>
সাইমন_উইভার

5

আমি বুঝতে পারি এটি পুরানো প্রশ্নে রয়েছে তবে এটি যুক্ত করতে চেয়েছিলেন

Environment.NewLine

কোডের মাধ্যমে এটি করে থাকলেও কাজ করে।


4
<TextBlock>
    Stuff on line1 <LineBreak/>
    Stuff on line2
</TextBlock>

এটি জানা জরুরী নয় তবে আপনি টেক্সটব্লক ট্যাগগুলির মধ্যে যা নির্দিষ্ট করেছেন তা ইনলাইন সামগ্রী হিসাবে ডাকা হয় এবং এটি টেক্সটব্লকটিতে যায় property ইনলাইনের সাবক্লাসগুলি অন্যদের মধ্যে রান এবং লাইন ব্রেক রয়েছে। দেখতে TextBlock.Inlines


3

এছাড়াও কাজ করে না

<TextBlock><TextBlock.Text>NO USING ABOVE TECHNIQUE HERE</TextBlock.Text>

কোনও বড় কথা নয়, কেবল ব্যবহারের প্রয়োজন

<TextBlock Text="Cool &#x0a;Newline trick" />

পরিবর্তে.



-1

সমাধান পিছনে কোড

private void Button1_Click(object sender, RoutedEventArgs e)
{
    System.Text.StringBuilder myStringBuilder = new System.Text.StringBuilder();
    myStringBuilder.Append("Orange").AppendLine();
    myStringBuilder.Append("").AppendLine();
    myStringBuilder.Append("Apple").AppendLine();
    myStringBuilder.Append("Banana").AppendLine();
    myStringBuilder.Append("").AppendLine();
    myStringBuilder.Append("Plum").AppendLine();
    TextBox1.Text = myStringBuilder.ToString();
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.