2009-12-17 10 views
10

निम्नलिखित एक्सएएमएल में, "टेस्ट" शब्द क्षैतिज पर लंबवत नहीं है।मैं स्टैकपैनल के अंदर टेक्स्टबॉक्स को लंबवत रूप से कैसे संरेखित कर सकता हूं?

मैं इसे लंबवत केंद्र में कैसे प्राप्त कर सकता हूं?

alt text http://www.deviantsart.com/upload/i4i5mt.png

<Window x:Class="TestVerticalAlign2343.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     WindowStartupLocation="CenterScreen" 
    Title="Window1" Height="768" Width="1024"> 
    <DockPanel LastChildFill="True"> 
     <Slider x:Name="TheSlider" 
       DockPanel.Dock="Left" 
       Orientation="Vertical" 
       HorizontalAlignment="Center" 
       HorizontalContentAlignment="Center" 
       Minimum="0" 
       Maximum="10" 
       Cursor="Hand" 
       Value="{Binding CurrentSliderValue}" 
       IsDirectionReversed="True" 
       IsSnapToTickEnabled="True" 
       Margin="10 10 0 10"/> 
     <Border DockPanel.Dock="Right" Background="Beige" 
       Padding="10" 
       Margin="10" 
       CornerRadius="5"> 
      <StackPanel Height="700"> 
       <TextBlock 
        Text="Test" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        FontSize="200" x:Name="TheNumber"/> 

      </StackPanel> 
     </Border> 
    </DockPanel> 
</Window> 

उत्तर

16

एक StackPanel, चाहे कितना आप इसे खिंचाव, पतन होगा बच्चों के चारों ओर आप इसे उससे अधिक नहीं बढ़ा सकते हैं। असल में, "ऊंचाई = 700" आपकी मदद नहीं कर रहा है।

तो या तो स्टैकपैनल पर "केंद्र" पर वर्टिकल एलाइनमेंट सेट करें ताकि स्टैकपैन डॉकपनेल के केंद्र में जा सके ... या स्टैक्पेनल को पूरी तरह से हटा दें और टेक्स्टब्लॉक पर वर्टिकल एलाइनमेंट = "सेंटर" सेट करें।

+5

+1 "एक स्टैकेपनेल, चाहे आप इसे कैसे फैलाते हैं, अपने बच्चों के चारों ओर पतन हो जाएंगे"। हालांकि, केवल पहले: –

-2

StackPanel कि TextBlock चारों ओर से घेरे के अंदर, VerticalContentAlignment की जाँच करें।

+4

लेकिन स्टैकपैनल में वर्टिकलकंटेंट एलाइनमेंट जैसा प्रतीत नहीं होता है। बटन: http://msdn.microsoft.com/en-us/library/system.windows.controls.control.verticalcontentalignment.aspx –

10

लगता है मैं asked this question 10 months ago, मैं DockPanel LastChildFill = सच इस तरह के साथ StackPanel की जगह काम करने के लिए उपरोक्त परिदृश्य है:

<DockPanel LastChildFill="True"> 
    <TextBlock 
     DockPanel.Dock="Top" 
     Text="Test" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     FontSize="200" x:Name="TheNumber"/> 
</DockPanel> 
+0

यह वही है जो मुझे चाहिए था। मैंने डॉकपैनल के अंदर एक स्टैकपैनल लगाया, और फिर स्टैकपैनेल के वर्टिकल एलाइनमेंट को सेंटर में सेट किया। स्टैकपैनल सामग्री को तब स्टैकपैनल में केंद्रित किया गया था, जिसे डॉकपनेल भरने के लिए विस्तारित किया गया था। –

+0

मुझे अपने टूलबॉक्स में डॉकपैनल नहीं मिला। लेकिन आप ContentControl का उपयोग कर सकते हैं यह ठीक है –

+1

धन्यवाद .... यह काम करता है .... – maamaa

4

मैं इस जो पूरी तरह से काम करने लगता है भर में ठोकर खाई:

<Grid> 
    <TextBlock Text="My Centered Text" 
       TextAlignment="Center" 
       VerticalAlignment="Center"/> 
</Grid> 

ग्रिड है कि यह के भीतर एकल पाठ बॉक्स ग्रिड में एकान्त सेल भरता है और TextBlock में VerticalAlignment सुनिश्चित करता है कि पाठ के भीतर केंद्रित है सुनिश्चित करता है की तुलना में।

बस अपनी टेक्स्ट क्षैतिज स्थिति/संरेखित करें हालांकि आपको आवश्यकता है (उपरोक्त स्निपेट इसे इस धुरी में भी केंद्रित करता है, लेकिन इसे बदलने से लंबवत केंद्र में परिवर्तन नहीं होता है)।

+0

मैं इस परिदृश्य पर है टेक्स्टब्लॉक को केंद्र में लंबवत रूप से गठबंधन किया गया है। दूसरा टेक्स्टब्लॉक अभी भी शीर्ष गठबंधन है। –

संबंधित मुद्दे

 संबंधित मुद्दे