एक TextBlock में पाठ स्वरूपण


104

मैं TextBlockअपने WPF अनुप्रयोग में एक नियंत्रण के अंदर एक पाठ का प्रारूपण कैसे प्राप्त कर सकता हूं ?

उदाहरण के लिए: मैं कुछ शब्दों को बोल्ड, इटैलिक में और कुछ को अलग-अलग रंगों में पसंद करना चाहूंगा, जैसे कि उदाहरण:

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

मेरे सवाल के पीछे का कारण यह वास्तविक समस्या है:

lblcolorfrom.Content = "Colour From: " + colourChange.ElementAt(3).Value.ToUpper();

मैं चाहूंगा कि स्ट्रिंग का दूसरा भाग बोल्ड हो, और मुझे पता है कि मैं दो नियंत्रणों (Labels, TextBlocks, आदि) का उपयोग कर सकता हूं, लेकिन उपयोग में पहले से ही बड़ी मात्रा में नियंत्रण के कारण, मैं नहीं।

जवाबों:


140

आपको उपयोग करने की आवश्यकता है Inlines:

<TextBlock.Inlines>
    <Run FontWeight="Bold" FontSize="14" Text="This is WPF TextBlock Example. " />
    <Run FontStyle="Italic" Foreground="Red" Text="This is red text. " />
</TextBlock.Inlines>

बाध्यकारी के साथ:

<TextBlock.Inlines>
    <Run FontWeight="Bold" FontSize="14" Text="{Binding BoldText}" />
    <Run FontStyle="Italic" Foreground="Red" Text="{Binding ItalicText}" />
</TextBlock.Inlines>

आप अन्य गुणों को भी बांध सकते हैं:

<TextBlock.Inlines>
    <Run FontWeight="{Binding Weight}"
         FontSize="{Binding Size}"
         Text="{Binding LineOne}" />
    <Run FontStyle="{Binding Style}"
         Foreground="Binding Colour}"
         Text="{Binding LineTwo}" />
</TextBlock.Inlines>

यदि आप एक बूलियन (कहते हैं) के रूप में बोल्ड हैं, तो आप कन्वर्टर्स के माध्यम से बांध सकते हैं।


98

आप इसे XAML में आसानी से कर सकते हैं:

<TextBlock>
  Hello <Bold>my</Bold> faithful <Underline>computer</Underline>.<Italic>You rock!</Italic>
</TextBlock>

आश्चर्यजनक! मुझे नहीं पता था कि XAML ऐसे निर्माणों का समर्थन करता है।
एलोन गुरलीनक

6
क्या यह समर्थन बाध्यकारी है?
आर्सेन मकार्त्यान

11
@ArsenMkrt कैसे के बारे में: <TextBlock FontWeight = "बोल्ड" पाठ = "{बाइंडिंग बजट}" />
Aetherix

2
@ मैं काम नहीं कर सकता। मैंने इसे Qqbenq से उपयोग किया: <TextBlock> <बोल्ड> £ </ Bold> <Run FontWeight = "Bold" पाठ = "{बाइंडिंग मासिक भुगतान}" /> </ TextBlock का मासिक चुकौती
Gail Foad

49

ऐसे विभिन्न Inlineतत्व हैं जो आपकी सहायता कर सकते हैं, सरलतम स्वरूपण विकल्पों के लिए जिनका आप उपयोग कर सकते हैं Bold, Italicऔर Underline:

<TextBlock>
    Sample text with <Bold>bold</Bold>, <Italic>italic</Italic> and <Underline>underlined</Underline> words.
</TextBlock>

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

मुझे लगता है कि यह ध्यान देने योग्य है, कि उन तत्वों बस के लिए shorthands वास्तव में Spanसेट विभिन्न गुणों के साथ तत्वों (यानी: के लिए Bold, FontWeightसंपत्ति के लिए सेट है FontWeights.Bold)।

यह हमें हमारे अगले विकल्प पर लाता है: उपर्युक्त Spanतत्व।

आप ऊपर के रूप में इस तत्व के साथ एक ही प्रभाव प्राप्त कर सकते हैं, लेकिन आपको और भी अधिक संभावनाएं प्रदान की जाती हैं; आप (दूसरों के बीच) Foregroundया Backgroundगुण सेट कर सकते हैं:

<TextBlock>
    Sample text with <Span FontWeight="Bold">bold</Span>, <Span FontStyle="Italic">italic</Span> and <Span TextDecorations="Underline">underlined</Span> words. <Span Foreground="Blue">Coloring</Span> <Span Foreground="Red">is</Span> <Span Background="Cyan">also</Span> <Span Foreground="Silver">possible</Span>.
</TextBlock>

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

Spanतत्व भी इस जैसे अन्य तत्व शामिल हो सकते:

<TextBlock>
    <Span FontStyle="Italic">Italic <Span Background="Yellow">text</Span> with some <Span Foreground="Blue">coloring</Span>.</Span>
</TextBlock>

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

एक और तत्व है, जो काफी समान है Span, इसे कहा जाता है RunRunअन्य इनलाइन तत्वों जबकि शामिल कर सकते हैं नहीं Spanकर सकते हैं, लेकिन आप आसानी से कर सकते हैं बाँध के लिए एक चर Runके Textसंपत्ति:

<TextBlock>
    Username: <Run FontWeight="Bold" Text="{Binding UserName}"/>
</TextBlock>

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

इसके अलावा, यदि आप चाहें, तो आप कोड-पीछे से पूरे प्रारूपण कर सकते हैं:

TextBlock tb = new TextBlock();
tb.Inlines.Add("Sample text with ");
tb.Inlines.Add(new Run("bold") { FontWeight = FontWeights.Bold });
tb.Inlines.Add(", ");
tb.Inlines.Add(new Run("italic ") { FontStyle = FontStyles.Italic });
tb.Inlines.Add("and ");
tb.Inlines.Add(new Run("underlined") { TextDecorations = TextDecorations.Underline });
tb.Inlines.Add("words.");

44

चार्ल्स पेट्ज़ोल्ड्स बूल एप्लीकेशन = कोड + मार्कअप से इस उदाहरण को देखें

//----------------------------------------------
// FormatTheText.cs (c) 2006 by Charles Petzold
//----------------------------------------------
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Documents;

namespace Petzold.FormatTheText
{
    class FormatTheText : Window
    {
        [STAThread]
        public static void Main()
        {
            Application app = new Application();
            app.Run(new FormatTheText());
        }
        public FormatTheText()
        {
            Title = "Format the Text";

            TextBlock txt = new TextBlock();
            txt.FontSize = 32; // 24 points
            txt.Inlines.Add("This is some ");
            txt.Inlines.Add(new Italic(new Run("italic")));
            txt.Inlines.Add(" text, and this is some ");
            txt.Inlines.Add(new Bold(new Run("bold")));
            txt.Inlines.Add(" text, and let's cap it off with some ");
            txt.Inlines.Add(new Bold(new Italic (new Run("bold italic"))));
            txt.Inlines.Add(" text.");
            txt.TextWrapping = TextWrapping.Wrap;

            Content = txt;
        }
    }
}

7

अच्छी व्याख्या के साथ एक अच्छी साइट:

http://www.wpf-tutorial.com/basic-controls/the-textblock-control-inline-formatting/

यहाँ लेखक आपको जो भी खोज रहा है उसके लिए अच्छे उदाहरण देता है! ओवल साइट अनुसंधान सामग्री के लिए बहुत अच्छा है, साथ ही इसमें आपके पास WPF में बहुत सारे विकल्प हैं

संपादित करें

टेक्स्ट को फॉर्मेट करने के लिए अलग-अलग तरीके हैं। मूल स्वरूपण के लिए (मेरी राय में सबसे आसान):

    <TextBlock Margin="10" TextWrapping="Wrap">
                    TextBlock with <Bold>bold</Bold>, <Italic>italic</Italic> and <Underline>underlined</Underline> text.
    </TextBlock>

उदाहरण 1 बोल्ड इटैलिक और अंडरस्कोर टेक्स्ट के साथ मूल स्वरूपण दिखाता है ।

निम्नलिखित स्पैन विधि शामिल है, इसके साथ आप पाठ को हाइलाइट करते हैं:

   <TextBlock Margin="10" TextWrapping="Wrap">
                    This <Span FontWeight="Bold">is</Span> a
                    <Span Background="Silver" Foreground="Maroon">TextBlock</Span>
                    with <Span TextDecorations="Underline">several</Span>
                    <Span FontStyle="Italic">Span</Span> elements,
                    <Span Foreground="Blue">
                            using a <Bold>variety</Bold> of <Italic>styles</Italic>
                    </Span>.
   </TextBlock>

उदाहरण 2 स्पैन फ़ंक्शन और इसके साथ विभिन्न संभावनाओं को दर्शाता है।

विस्तृत विवरण के लिए साइट की जाँच करें!

उदाहरण


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक हिस्सों को यहां शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
रिचर्ड स्लेटर

1
@Mogsdad ने पोस्ट को एडिट किया इसलिए यह कोड के उदाहरण दिखाता है
Giellez

@ रीचर्डस्लेटर ने पोस्ट को
एडिट किया

0

ये है मेरा उपाय…।

    <TextBlock TextWrapping="Wrap" Style="{DynamicResource InstructionStyle}"> 
        <Run Text="This wizard will take you through the purge process in the correct order." FontWeight="Bold"></Run>
        <LineBreak></LineBreak>
        <Run Text="To Begin, select" FontStyle="Italic"></Run>
        <Run x:Name="InstructionSection" Text="'REPLACED AT RUNTIME'" FontWeight="Bold"></Run>
        <Run Text="from the menu." FontStyle="Italic"></Run>
    </TextBlock>

मैं सीख रहा हूँ ... इसलिए यदि किसी के पास उपरोक्त समाधान पर thaughts है तो कृपया साझा करें! :)

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