मैं टेक्स्टब्लॉक के अंदर टेक्स्ट में लंबवत केंद्र संरेखण कैसे निर्दिष्ट करूं? मुझे TextAlignment प्रॉपर्टी मिली लेकिन यह क्षैतिज टेक्स्ट संरेखण के लिए है। वर्टिकल टेक्स्ट संरेखण के लिए मैं इसे कैसे कर सकता हूं?WPF टेक्स्टब्लॉक में टेक्स्ट वर्टिकल संरेखण
उत्तर
एक TextBlock ही खड़ी संरेखण यह है कि मैंने पाया एक सीमा के अंदर TextBlock डाल करने के लिए है करने के लिए
सबसे अच्छा तरीका है, इसलिए सीमा नहीं कर सकते आपके लिए संरेखण करता है।
<Border BorderBrush="{x:Null}" Height="50">
<TextBlock TextWrapping="Wrap" Text="Some Text" VerticalAlignment="Center"/>
</Border>
नोट: यह कार्यात्मक एक ग्रिड का उपयोग करने के लिए बराबर है, यह सिर्फ निर्भर करता है कि कैसे आप नियंत्रण के रूप में अपने लेआउट के बाकी के साथ में फिट करना चाहते हैं जो एक अधिक उपयुक्त है
+1 लंबवत संरेखण प्रभाव के लिए सीमा की ऊंचाई निर्धारित की जानी चाहिए। –
इसके अलावा, टेक्स्टब्लॉक में ऊंचाई निर्दिष्ट नहीं हो सकती है, या यह लंबवत रूप से केंद्र नहीं होगी। – pearcewg
@gav - टेक्स्ट एलाइनमेंट केवल क्षैतिज संरेखण करता है ... प्रश्न लंबवत संरेखण के बारे में है –
टेक्स्टब्लॉक वर्टिकल टेक्स्ट संरेखण का समर्थन नहीं करता है।
मैं टेक्स्ट ब्लॉक को ग्रिड के साथ लपेटकर और क्षैतिज एलाइनमेंट = "स्ट्रेच" और वर्टिकल अलाइनमेंट = "सेंटर" सेट करके इसके आसपास काम करता हूं।
इस तरह:
<Grid>
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Text="Your text" />
</Grid>
+1 सीमा-आधारित दृष्टिकोण के साथ, ग्रिड के लिए ऊँचाई सेट करने की भी आवश्यकता नहीं है। –
मुझे पता चला कि यह दृष्टिकोण मेरे लिए सबसे अच्छा काम करता है। मैं 'ग्रिड' के अंदर 'एलिप्स' पर 'टेक्स्टब्लॉक' ओवरले करके गतिशील सूचक रोशनी बना रहा हूं। मेरी चौड़ाई और ऊंचाई गुणों को बांधने या कुछ भी मुश्किल करने की आवश्यकता नहीं है। – paddy
मेरे लिए, VerticalAlignment="Center"
इस समस्या को हल करता है।
ऐसा इसलिए हो सकता है क्योंकि TextBlock
एक ग्रिड में लपेटा गया है, लेकिन फिर व्यावहारिक रूप से wpf में सब कुछ है।
जबकि Orion Edwards Answer किसी भी स्थिति के लिए काम करता है, तो सीमा जोड़ने और हर बार जब आप ऐसा करना चाहते हैं तो सीमा के गुणों को सेट करना दर्द हो सकता है। एक और त्वरित तरीका टेक्स्ट ब्लॉक की पैडिंग सेट करना है:
<TextBlock Height="22" Padding="3" />
मुझे लगता है कि यह सबसे शानदार जवाब है। –
कि मुझे देखने के लिए देखा गया था !!! धन्यवाद! –
यह केवल तभी काम करता है जब फ़ॉन्ट का आकार 16px है !? – C4u
आप मेरी ब्लॉग पोस्ट देख सकते हैं। आप codebehind से टेक्स्टब्लॉक की कस्टम ऊंचाई सेट कर सकते हैं। कस्टम ऊंचाई की स्थापना के लिए आप एक सीमा में अंदर यह सेट या StackPanel
http://ciintelligence.blogspot.com/2011/02/wpf-textblock-vertical-alignment-with.html
आप TextBlock के बजाय लेबल का उपयोग कर सकते की जरूरत है।
<Label Content="Hello, World!">
<Label.LayoutTransform>
<RotateTransform Angle="270"/>
</Label.LayoutTransform>
</Label>
अच्छा, लेबल वर्टिकलकंटेंटलाइन है। Greeeat। +1 –
स्पष्ट नहीं है कि OP को टेक्स्टब्लॉक का उपयोग करने की आवश्यकता है या लेबल से दूर हो सकता है। एक लेबल का उपयोग करना जो मुझे चाहिए उसके लिए काम किया। +1 –
यह सवाल है कि लंबवत पाठ का उत्पादन कैसे करें, वर्टिकल संरेखण को कैसे लागू करें! –
मैं पाया है कि पाठ बॉक्स शैली को संशोधित करने (यानी: controltemplate
) और फिर संशोधित केंद्र को PART_ContentHost
लंबवत संरेखण बस गिगल्स के लिए चाल
ओपी पूछ रहा है टेक्स्टब्लॉक के बारे में। उनके पास ControlTemplates नहीं है। – ANeves
क्या करेंगे, इस XAML एक बार आज़माएंगे। यह सही नहीं है क्योंकि यह 'संरेखण' नहीं है लेकिन यह आपको अनुच्छेद के भीतर पाठ संरेखण समायोजित करने की अनुमति देता है।
<TextBlock>
<TextBlock BaselineOffset="30">One</TextBlock>
<TextBlock BaselineOffset="20">Two</TextBlock>
<Run>Three</Run>
<Run BaselineAlignment="Subscript">Four</Run>
</TextBlock>
आप TextBlock की ऊंचाई को नजरअंदाज कर सकते हैं, यह आप इस का उपयोग करने के लिए बेहतर है: मेरे मामले में
<TextBlock Height="{Binding}" Text="Your text"
TextWrapping="Wrap" VerticalAlignment="Center" Width="28"/>
, मैं ऐसा किया TextBlock
प्रदर्शन अच्छा बनाने के लिए।
<Border BorderThickness="3" BorderBrush="Yellow" CornerRadius="10" Padding="2"
HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="150">
<TextBlock FontSize="20" Height="23" HorizontalAlignment="Left" Margin="0,0,0,-5" Text="" VerticalAlignment="Top" Width="141" Background="White" />
</Border>
नीचे से पाठ आगे बनाने के लिए चाल मैंने पाया कि मैं इसे थोड़ा अलग करना था
Margin="0,0,0,-5"
स्थापित करने के लिए है।मेरी समस्या यह थी कि अगर मैंने फ़ॉन्ट आकार बदल दिया है, तो टेक्स्ट टेक्स्ट बॉक्स के बाकी हिस्सों के साथ नीचे रहने के बजाय टेक्स्टबॉक्स में आगे बढ़ेगा। ऊर्ध्वाधर संरेखण को ऊपर से नीचे तक बदलकर मैं आकार 20 से आकार 14 & पर प्रोग्रामेटिक रूप से फ़ॉन्ट को बदलने में सक्षम था, पाठ की गुरुत्वाकर्षण को नीचे रखकर और चीजों को साफ रखता था। आइए जानें:
@Orion एडवर्ड्स द्वारा प्रदान की जवाब पर विस्तार करने के लिए, इस (कोई शैली निर्धारित) कैसे आप से कोड-पीछे पूरी तरह से करना होगा है। असल में एक कस्टम क्लास बनाएं जो सीमा से विरासत में हो, जिसके बच्चे को टेक्स्टबॉक्स पर सेट किया गया हो। नीचे दिया गया उदाहरण मानता है कि आप केवल एक पंक्ति चाहते हैं और सीमा सीमा कैनवास का बच्चा है। यह भी मानता है कि आपको सीमा की चौड़ाई के आधार पर टेक्स्टबॉक्स की अधिकतम लम्बाई संपत्ति समायोजित करने की आवश्यकता होगी। नीचे दिया गया उदाहरण भी 'आईबीएम' प्रकार पर सेट करके टेक्स्टबॉक्स की नकल करने के लिए सीमा के कर्सर को सेट करता है। '3' का मार्जिन सेट किया गया है ताकि टेक्स्टबॉक्स को सीमा के बाईं ओर बिल्कुल गठबंधन न किया जा सके।
double __dX = 20;
double __dY = 180;
double __dW = 500;
double __dH = 40;
int __iMaxLen = 100;
this.m_Z3r0_TextBox_Description = new CZ3r0_TextBox(__dX, __dY, __dW, __dH, __iMaxLen, TextAlignment.Left);
this.Children.Add(this.m_Z3r0_TextBox_Description);
कक्षा:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
namespace ifn0tz3r0Exp
{
class CZ3r0_TextBox : Border
{
private TextBox m_TextBox;
private SolidColorBrush m_Brush_Green = new SolidColorBrush(Colors.MediumSpringGreen);
private SolidColorBrush m_Brush_Black = new SolidColorBrush(Colors.Black);
private SolidColorBrush m_Brush_Transparent = new SolidColorBrush(Colors.Transparent);
public CZ3r0_TextBox(double _dX, double _dY, double _dW, double _dH, int _iMaxLen, TextAlignment _Align)
{
/////////////////////////////////////////////////////////////
//TEXTBOX
this.m_TextBox = new TextBox();
this.m_TextBox.Text = "This is a vertically centered one-line textbox embedded in a border...";
Canvas.SetLeft(this, _dX);
Canvas.SetTop(this, _dY);
this.m_TextBox.FontFamily = new FontFamily("Consolas");
this.m_TextBox.FontSize = 11;
this.m_TextBox.Background = this.m_Brush_Black;
this.m_TextBox.Foreground = this.m_Brush_Green;
this.m_TextBox.BorderBrush = this.m_Brush_Transparent;
this.m_TextBox.BorderThickness = new Thickness(0.0);
this.m_TextBox.Width = _dW;
this.m_TextBox.MaxLength = _iMaxLen;
this.m_TextBox.TextAlignment = _Align;
this.m_TextBox.VerticalAlignment = System.Windows.VerticalAlignment.Center;
this.m_TextBox.FocusVisualStyle = null;
this.m_TextBox.Margin = new Thickness(3.0);
this.m_TextBox.CaretBrush = this.m_Brush_Green;
this.m_TextBox.SelectionBrush = this.m_Brush_Green;
this.m_TextBox.SelectionOpacity = 0.3;
this.m_TextBox.GotFocus += this.CZ3r0_TextBox_GotFocus;
this.m_TextBox.LostFocus += this.CZ3r0_TextBox_LostFocus;
/////////////////////////////////////////////////////////////
//BORDER
this.BorderBrush = this.m_Brush_Transparent;
this.BorderThickness = new Thickness(1.0);
this.Background = this.m_Brush_Black;
this.Height = _dH;
this.Child = this.m_TextBox;
this.FocusVisualStyle = null;
this.MouseDown += this.CZ3r0_TextBox_MouseDown;
this.Cursor = Cursors.IBeam;
/////////////////////////////////////////////////////////////
}
private void CZ3r0_TextBox_MouseDown(object _Sender, MouseEventArgs e)
{
this.m_TextBox.Focus();
}
private void CZ3r0_TextBox_GotFocus(object _Sender, RoutedEventArgs e)
{
this.BorderBrush = this.m_Brush_Green;
}
private void CZ3r0_TextBox_LostFocus(object _Sender, RoutedEventArgs e)
{
this.BorderBrush = this.m_Brush_Transparent;
}
}
}
मुझे लगता है कि एक लेबल में एक लेबल (या TextBlock) का उपयोग करने के लिए बेहतर है, तो आप एक माउस घटना सीधे सीमा नियंत्रण में संलग्न नहीं कर सकते हैं, अंत में यह जुड़ा हुआ है TextBlock में, यह मेरा खुलने और है:
<Label
Height="32"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Stretch"
MouseLeftButtonUp="MenuItem_MouseLeftButtonUp">
<TextBlock Padding="32 0 10 0">
Label with click event
</TextBlock>
</Label>
आप text wrapping के बिना नहीं कर सकते हैं, मुझे लगता है कि एक लेबल के साथ TextBlock की जगह ऐसा करने का सबसे संक्षिप्त तरीका है। अन्यथा अन्य मान्य उत्तरों में से एक का पालन करें।
<Label Content="Some Text" VerticalAlignment="Center"/>
<TextBox AcceptsReturn="True"
TextWrapping="Wrap"
VerticalContentAlignment="Top" >
</TextBox>
प्रश्न 'टेक्स्टब्लॉक' के लिए था, न कि 'टेक्स्टबॉक्स'। -1 – KnorxThieus
TextBlock
अपनी सामग्री के लंबवत संरेखण समर्थन नहीं करता। यदि आपको TextBlock
का उपयोग करना होगा तो आपको इसे अपने माता-पिता के संबंध में संरेखित करना होगा।
हालांकि आप Label
बजाय उपयोग कर सकते हैं (और वे बहुत इसी तरह की सुविधा है) तो आप कर सकते हैं स्थिति पाठ सामग्री:
<Label VerticalContentAlignment="Center" HorizontalContentAlignment="Center">
I am centred text!
</Label>
Label
, डिफ़ॉल्ट रूप से अपनी सीमा को भरने के लिए विस्तृत होंगी अर्थ लेबल का पाठ केंद्रित होगा।
- 1. वर्टिकल टेक्स्ट संरेखण?
- 2. टेक्स्ट बॉक्स में टेक्स्ट वर्टिकल संरेखण - फ़ायरफ़ॉक्स समस्या
- 3. WPF: टेक्स्टब्लॉक
- 4. डब्ल्यूपीएफ टेक्स्टब्लॉक में स्वचालित वर्टिकल स्क्रॉल बार?
- 5. वर्ड टेबल में वर्टिकल संरेखण में टेक्स्ट कैसे मिलता है?
- 6. UITextField वर्टिकल संरेखण
- 7. सीएसएस वर्टिकल संरेखण मध्य
- 8. टेक्स्टब्लॉक (WPF)
- 9. WPF में टेक्स्टब्लॉक के अंदर टेक्स्ट में सीमा कैसे जोड़ें?
- 10. वर्टिकल संरेखण चेकबॉक्स/लेबल जोड़े
- 11. GridViewColumn.CellTemplate में टेक्स्टब्लॉक टेक्स्ट रैपिंग
- 12. टेक्स्टब्लॉक
- 13. डब्ल्यूपीएफ टेक्स्टब्लॉक टेक्स्ट
- 14. टेक्स्टब्लॉक
- 15. टेक्स्ट टेक्स्ट बदलें यदि टेक्स्ट टेक्स्टब्लॉक
- 16. wpf में टेक्स्टब्लॉक ब्लिंक कैसे बनाएं?
- 17. सी # टेक्स्टबॉक्स के लिए WinForms वर्टिकल संरेखण, आदि
- 18. डाटाग्रिड टेक्स्ट संरेखण
- 19. आईओएस - UITableViewCell टेक्स्ट संरेखण
- 20. यूलाबेल पैराग्राफ टेक्स्ट संरेखण
- 21. जेएलिस्ट टेक्स्ट संरेखण
- 22. पिक्सेल-सटीक टेक्स्ट संरेखण
- 23. निम्न टेक्स्ट संरेखण
- 24. UILabel टेक्स्ट संरेखण दाएं
- 25. टेक्स्टब्लॉक
- 26. एंड्रॉइड टेक्स्ट संरेखण संपादित करें
- 27. एंड्रॉइड बटन ठीक टेक्स्ट संरेखण
- 28. टेक्स्ट संरेखण केंद्र - खोल स्क्रिप्ट
- 29. पूर्ण पोजिशनिंग और टेक्स्ट संरेखण
- 30. टेक्स्टब्लॉक
@shr और अन्य: ध्यान दें कि 'टेक्स्ट एलाइनमेंट' केवल क्षैतिज संरेखण को प्रभावित करता है, न कि * लंबवत * संरेखण (जैसा कि प्रश्न संदर्भित करता है)। –