আমি কীভাবে ডাব্লুপিএফ ব্যবহার করে একটি লেবেলে পাঠ্য মোড়ানো করতে পারি?


251

আমার একটি TextBoxএবং একটি লেবেল রয়েছে। একটি বোতাম ক্লিক করার পরে, আমি নিম্নলিখিত কোডটি কার্যকর করি:

 label1.Content = textbox1.Text; 

আমার প্রশ্নটি হল, আমি কীভাবে লেবেলটির পাঠ্য মোড়ানো সক্ষম করব? এক লাইনে প্রদর্শন করার জন্য খুব বেশি পাঠ্য থাকতে পারে এবং আমি যদি এটি চান তবে এটি স্বয়ংক্রিয়ভাবে একাধিক লাইনে মোড়ানো হোক।

উত্তর:


390

Labelনিয়ন্ত্রণ সরাসরি WPF পাঠ্য মোড়ানো সমর্থন করে না। TextBlockপরিবর্তে আপনার ব্যবহার করা উচিত । (অবশ্যই, আপনি যদি চান তবে আপনি একটি নিয়ন্ত্রণের TextBlock ভিতরে রাখতেLabel পারেন))

কোডের উদাহরণ:

<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>

30
... এবং IsReadOnly="true"একটি লেবেল নকল করতে সেট করুন :)
জুলিয়ানএম

7
এটি ঠিক আছে, তবে আপনি যদি লেবেলের টার্গেট সম্পত্তি বৈশিষ্ট্যটি ব্যবহার করতে চান তবে তা নয় - যা ন্যায্য হতে পারে আপনি কেবলমাত্র টেক্সটব্লকের উপরে লেবেল ব্যবহার করতে পারেন d আমি এই প্রশ্নের একটি উত্তর সরবরাহ করেছি যা কীভাবে কোনও
লেবেলে

24
JulianM - তারা ইতিমধ্যে কেবলমাত্র stackoverflow.com/questions/5073244/making-textblock-readonly ? সম্ভবত তারা 2011
মার্টিন ক্যাপোডিসি

12
@ জুলিয়ানএম আপনি কি বিভ্রান্ত TextBlockকরছেন TextBox? - TextBlockডাব্লুপিএফ "আভালন" নামকরণের কোডটি কেবল পঠনযোগ্য।
BrainSlugs83

ফর্মটিতে Padding="5"আমার অন্যান্য Labelনিয়ন্ত্রণগুলিতে প্যাডিংয়ের সাথে মেলে আমার প্রয়োজন ছিল । রাজেশের উত্তর নীচে দেখুন।
বব কাউফম্যান

105

সম্পত্তি হিসাবে ব্যবহার করতে চাইলে প্রায়শই আপনি এর Labelসাথে কোনও প্রতিস্থাপন করতে পারবেন না (যা নীচের নমুনা কোডে যেমন ALT + C যেমন কীবোর্ড ব্যবহার করার সময় লক্ষ্যমাত্রা নিয়ন্ত্রণের দিকে মনোনিবেশ করে), কারণ এটি সমস্তই একটি এর উপর নির্ভর করে ।TextBlockTargetLabelTextBlock

তবে, পাঠ্য রেন্ডার করতে একটি Labelব্যবহার করে TextBlock(যদি কোনও Contentসম্পত্তিতে স্ট্রিং স্থাপন করা হয় , যা এটি সাধারণত হয়); অতএব, আপনি TextBlockএই Labelজাতীয় অভ্যন্তরের জন্য একটি শৈলী যুক্ত করতে পারেন :

<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টেক্সট মোড়ানোর জন্য সক্ষম হয়ে গেলে এমনকি কার্যকারিতা বজায় রাখতে পারেন।


3
এটি কি আসলে কাজ করে? ডাব্লুপিএফ যুক্ত করা টেক্সটব্লকটি থেকে যৌক্তিক বৃক্ষের অস্তিত্ব নেই এবং আপনার সংস্থানটি গ্রহণ করবে না।
গুড্ডর

2
হ্যাঁ, এটি কাজ করে — আমি আমার উত্তর প্রকাশের আগে এটি পরীক্ষা করেছিলাম। আপনি ঠিক বলেছেন যে লক্ষ্যযুক্ত উপাদানগুলি যৌক্তিক গাছে নেই, তবে এটি এখানে দৃশ্যমান গাছ tree
পলজে

11
এটি কয়েক বছরের পুরনো তবে এটি ভিএস 2015 এর সাথে কাজ করবে বলে মনে হচ্ছে না What লেবেলে <লেবেল> <টেক্সট ব্লক পাঠ্য র‌্যাপিং = "মোড়ানো" পাঠ্য = "যাই হোক না কেন" /> << লেবেলে একটি টেক্সটব্লক ব্যবহার করা কাজ করে বলে মনে হচ্ছে What
ডেভিড

93

আমি নিম্নলিখিত কোড ব্যবহার করেছি।

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

4
এটিই আমার পক্ষে সবচেয়ে ভাল কাজ করেছে। সহজ, অন্য নিয়ন্ত্রণগুলি ব্যবহার করার বা প্রচুর কোড যুক্ত করার দরকার নেই।
ইয়েসেলা

3
@ জেরেমিচান, আমি এটিকে উত্তর হিসাবে চিহ্নিত করব। আমি খুশি যে আমি স্ক্রোল করে এই উত্তরটি দেখেছি।
মেহরাদ

আমি আমার আপটি ফিরিয়ে দিয়েছি .. আমি এটি ব্যবহার করার চেষ্টা করেছি তবে এটি আমার "দিগন্তআলাইনমেন্ট =" কেন্দ্র "কে পাশ দিয়ে গেছে। টেক্সটব্লক ব্যবহারের বিপরীতে, এটি হয়নি ...
জ্যাক ফ্রস্ট

4
লেবেল.সন্টেন্ট অংশটি অপ্রয়োজনীয়, কারণ লেবেল ট্যাগের মধ্যে থাকা কোনও কিছুই স্বয়ংক্রিয়ভাবে সামগ্রী। তবুও, অ্যাক্সেস কী সরবরাহ করার ক্ষমতা ধরে রাখার একটি দুর্দান্ত উত্তর, যেখানে একটি পাঠ্যব্লক ব্যবহার করে সমস্ত সমাধান এই ক্ষেত্রে ব্যর্থ হয়।
রব জি

35

আপনি লেবেলের ভিতরে একটি টেক্সটব্লক রাখতে পারেন:

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

4
আমি এই পদ্ধতির পছন্দ করি কারণ এটি আপনার লেবেল শৈলীগুলিকে টেক্সটব্লকের জন্য অতিরিক্ত শৈলী তৈরি না করেই এই পাঠ্য ব্লকটিতে প্রয়োগ করতে দেয়।
সোগগার

15

লেবেল নিয়ন্ত্রণে পাঠ্য মোড়ানো করতে, লেবেলের টেমপ্লেটটি নিম্নরূপে পরিবর্তন করুন:

<Style x:Key="ErrorBoxStyle" TargetType="{x:Type Label}">
        <Setter Property="BorderBrush" Value="#FFF08A73"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="Foreground" Value="Red"/>
        <Setter Property="Background" Value="#FFFFE3DF"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="Padding" Value="5"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Label}">
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true" CornerRadius="5" HorizontalAlignment="Stretch">

                        <TextBlock TextWrapping="Wrap" Text="{TemplateBinding Content}"/>
                    </Border>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

সংযোজন: আপনি মিশ্রিত করা-ইন আপনি টেক্সট মোড়ানো বা অন্যান্য TextBlock-নির্দিষ্ট বৈশিষ্ট্য যোগ করতে হবে করতে নিম্নলিখিত রেসিপি সঙ্গে stackoverflow.com/questions/3970285/...
ইউরি Schkatula

12

লেবেল ক্লাস ব্যবহার না করে, আমি একটি পাঠ্যব্লক ব্যবহার করার পরামর্শ দেব । এটি আপনাকে পাঠ্য মোড়ক যথাযথভাবে সেট করতে দেয় ।

আপনি সর্বদা করতে পারেন:

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

তবে, যদি এই সমস্ত "লেবেল" এর জন্য পাঠ্য প্রদর্শন করা হয় তবে TextBlockতার পরিবর্তে একটি ব্যবহার করুন।


গতিশীল লেবেল সামগ্রীগুলি পপুলেটিংয়ের জন্য আমি এই পদ্ধতিটি ব্যবহার করে শেষ করেছি। সবচেয়ে সহজ এবং পরিষ্কার পদ্ধতি বলে মনে হচ্ছে। আমি ভাবছি আপনি লাইনটি লেবেল 1 সংজ্ঞায়, যেমন <br/>Label label1 = new Label() { Content = new TextBlock() { Text = caption, TextWrapping = TextWrapping.Wrap }, FontWeight = FontWeights.Normal };
দ্যাশ্রেডার

4

আমাদের এমন একধরণের নিয়ন্ত্রণ রাখা দরকার যা পাঠ্য ব্লক / পাঠ্যবক্সের মতো পাঠ্য মোড়ানো করতে পারে

 <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>

2

এটি ব্যবহার করার চেষ্টা করুন

lblresult.Content = lblresult.Content + "prime are :" + j + "\n";

2
 <Label x:Name="datetimeofmsg" 
           HorizontalAlignment="Left" Margin="4.286,55,0,0" 
           VerticalAlignment="Top" Background="{x:Null}" 
           FontWeight="Bold" Width="61.714" Height="20" Foreground="White">
        <Label.Content>
            <AccessText TextWrapping="Wrap"/>
        </Label.Content>
    </Label>

2

আমি এটি MySQL ডেটাবেস থেকে ডেটা পুনরুদ্ধার করতে ব্যবহার করেছি:

AccessText a = new AccessText();    
a.Text=reader[1].ToString();       // MySql reader
a.Width = 70;
a.TextWrapping = TextWrapping.WrapWithOverflow;
labels[i].Content = a;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.