2009-10-17 16 views
16

यह इतना आसान होना चाहिए - मैं अपने डेस्क के खिलाफ एक बहुत ही सरल कार्य कार्य करने की कोशिश कर रहा हूं (मुझे लगता है कि डब्ल्यूपीएफ असहनीय या छोटी गाड़ी है) ...डब्ल्यूपीएफ - एक क्षैतिज उन्मुख स्टैकपैन के अंदर टेक्स्टब्लॉक को सही तरीके से संरेखित कैसे करें?

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

मैं इसे कैसे पूरा करूं?

यह सब करने से मुझे याद दिलाता है कि मैं सिल्वरलाइट से दूर क्यों चला गया। : पी

उत्तर

2

आपकी टिप्पणियों के प्रकाश में, यहां एक और उदाहरण है जो आप चाहते हैं कि पूरा करने के कुछ तरीके दिखा रहे हैं, ग्रिड लेआउट और डॉकपैन लेआउट। इसकी आवाज़ से, डॉकपैन लेआउट शायद आप जो खोज रहे हैं। यदि यह काम नहीं करता है, तो आपको अपने वांछित लेआउट और गुणों का एक स्पष्ट विवरण प्रदान करने की आवश्यकता हो सकती है।

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="0.45*" /> 
    <RowDefinition Height="0.05*" /> 
    <RowDefinition Height="0.45*" /> 
    </Grid.RowDefinitions> 
    <Grid Grid.Row="0"> 
     <Grid.ColumnDefinitions> 
     <!-- note: you don't need to declare ColumnDefintion 
     widths here; added for clarity. --> 
     <ColumnDefinition Width="0.5*" /> 
     <ColumnDefinition Width="0.5*" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock 
      Grid.Column="0" 
      Background="Tomato" 
      TextWrapping="Wrap">I'm on the left</TextBlock> 
     <TextBlock 
      Grid.Column="1" 
      Background="Yellow" 
      TextAlignment="Right" 
      TextWrapping="Wrap">I'm on the right</TextBlock> 
    </Grid> 

    <Grid Grid.Row="1" Background="Gray" /> 

    <DockPanel Grid.Row="2"> 
     <TextBlock 
      DockPanel.Dock="Left" 
      Background="Tomato" 
      TextWrapping="Wrap">I'm on the left</TextBlock> 
     <TextBlock 
      DockPanel.Dock="Right" 
      Background="Yellow" 
      TextAlignment="Right" 
      TextWrapping="Wrap">I'm on the right</TextBlock> 
    </DockPanel> 
</Grid> 
</Page> 
+0

क्या चौड़ाई को स्पष्ट रूप से परिभाषित किए बिना ऐसा करने के लिए वैसे भी है? मैं फॉर्म को किसी भी क्षेत्र को भरने के लिए खिंचाव करने में सक्षम होना चाहता हूं। यह मेरी समस्या का हिस्सा है - मुझे कोई रास्ता नहीं मिला है कि "चौड़ाई = 100%" – bugfixr

+0

चूंकि आपके स्टैकपैनल का क्षैतिज अभिविन्यास है, टेक्स्टब्लॉक्स केवल क्षैतिज रूप से स्टैकिंग के साथ ही रहते हैं। चौड़ाई के बिना, टेक्स्टब्लॉक इसकी सामग्री के आकार का होगा। कुछ विचार: टेक्स्टब्लॉक चौड़ाई को हटाएं और स्टैकपैनल को ओरिएंटेशन = "वर्टिकल" पर सेट करें और प्रत्येक टेक्स्टब्लॉक अब स्टैकपैनल की उपलब्ध चौड़ाई का 100% ले जाएगा। या, आप ग्रिड लेआउट के साथ प्रयोग करने का प्रयास कर सकते हैं। यह जानने के बिना कि आप अपने लेआउट के लिए क्या चाहते हैं, यह अनुमान लगाने वाला गेम है। –

+1

मैं मानता हूं कि वह शायद स्टैकपैनेल (आपके द्वारा दिए गए कारण के लिए) के अलावा कुछ और चाहता है, लेकिन सरल लेआउट के लिए वह बात करता है, मैं ग्रिड की बजाय डॉकपैनल का सुझाव दूंगा। – itowlson

24

आप एक DockPanel उपयोग करने की आवश्यकता आप सभी तत्वों को StackPanel की तरह खड़ी होना नहीं चाहते हो सकता है। सही-संरेखण से पीछे नहीं TextBlock कारण के लिए, आप उन दोनों के बीच क्षेत्र को भरने के लिए एक अतिरिक्त डमी TextBlock जोड़ सकते हैं:

<DockPanel> 
     <TextBlock>Left text</TextBlock> 
     <TextBlock DockPanel.Dock="Right">Right text</TextBlock> 
     <TextBlock /> 
    </DockPanel> 

या आप TextAlignment विशेषता का उपयोग कर सकते हैं:

<DockPanel> 
     <TextBlock>Left text</TextBlock> 
     <TextBlock TextAlignment="Right">Right text</TextBlock> 
    </DockPanel> 
+0

काम किया! आपके समय और प्रयासों के लिए धन्यवाद :) –

1

इसे ग्रिड का उपयोग करके बहुत आसानी से संग्रहीत किया जा सकता है क्योंकि मुझे एक ही समस्या है :)

<Grid> 
    <TextBlock>Left text</TextBlock> 
    <TextBlock TextAlignment="Right">Right text</TextBlock> 
</Grid> 
संबंधित मुद्दे