2009-12-12 6 views
15

मेरे पास 3 कॉलम के साथ ग्रिड वाला ऐप है। पहले और दूसरे कॉलम के बीच ग्रिड स्प्लिटर बस ठीक काम करता है। दूसरे और तीसरे कॉलम के बीच स्प्लिटर को पाने के लिए मैंने स्प्लिटर के लिए एक कॉलम बनाया। (तो अब तीसरा कॉलम वास्तव में चौथा है।)डब्ल्यूपीएफ - तीन कॉलम के साथ ग्रिडस्प्लिटर

जब मैं अन्य कॉलम का आकार बदलता हूं तो भी कम हो जाता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि मैंने उन्हें सापेक्ष आकार के रूप में स्थापित किया है। लेकिन मुझे नहीं पता कि इसे कैसे ठीक किया जाए।

यहां मेरे मुद्दे का एक एक्सएएमएल पैड तैयार उदाहरण है। इसे एक्सएएमएल पैड में प्लग करें और फिर छोटे होने के लिए अंतिम कॉलम का आकार बदलने का प्रयास करें।

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1*" /> 
      <ColumnDefinition Width="1*" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="1*" /> 
     </Grid.ColumnDefinitions> 
     <StackPanel Background="#feca00" Grid.Column="0"> 
      <TextBlock FontSize="35" Foreground="#58290A" 
        TextWrapping="Wrap">Left Hand Side</TextBlock> 
     </StackPanel> 
     <GridSplitter Width="10" /> 
     <Border CornerRadius="10" BorderBrush="#58290A" 
       BorderThickness="5" Grid.Column="1"> 
      <TextBlock FontSize="25" Margin="20" Foreground="#FECA00" 
        TextWrapping="Wrap">Right Hand Side</TextBlock> 
     </Border> 
     <GridSplitter Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter> 
     <TabControl Grid.Column="3" Name="tabControl1"> 
      <TabItem Header="Add Links" Name="tabAddLinks"> 
       <Grid></Grid> 
      </TabItem> 
     </TabControl> 
    </Grid> 
</Page> 

सहायता के लिए धन्यवाद!


संपादित करें: यह सुझाव दिया गया है कि उनके अपने कॉलम में दोनों splitters होने इसे ठीक कर सकता है। मैंने कोशिश की और अब पहला स्प्लिटर दूसरे स्प्लिटर की तरह कॉलम को भी कम करता है।

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1*" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="1*" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="1*" /> 
     </Grid.ColumnDefinitions> 
     <StackPanel Background="#feca00" Grid.Column="0"> 
      <TextBlock FontSize="35" Foreground="#58290A" 
        TextWrapping="Wrap">Left Hand Side</TextBlock> 
     </StackPanel> 
     <GridSplitter Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter> 
     <Border CornerRadius="10" BorderBrush="#58290A" 
       BorderThickness="5" Grid.Column="2"> 
      <TextBlock FontSize="25" Margin="20" Foreground="#FECA00" 
        TextWrapping="Wrap">Right Hand Side</TextBlock> 
     </Border> 
     <GridSplitter Grid.Column="3" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter> 
     <TabControl Grid.Column="4" Name="tabControl1"> 
      <TabItem Header="Add Links" Name="tabAddLinks"> 
       <Grid></Grid> 
      </TabItem> 
     </TabControl> 
    </Grid> 
</Page> 

उत्तर

44

दोनों splitters के लिए HorizontalAlignment="Center" स्थापित करने का प्रयास करें - पता नहीं क्यों यह "सही" पर सेट व्यवहार का कारण तो मदहोश जाना चाहिए होते हैं, लेकिन यह मुझे :)

+0

आपको आशीर्वाद! मैं इस पर अपने बालों को खींच रहा था !!!!! – Vaccano

+2

अपडेट: मुझे लगता है कि यह ग्रिडस्प्लिटर के ResizeBehaviour प्रॉपर्टी के साथ करना है, यदि निर्दिष्ट नहीं किया गया है तो GronSplitter के कॉलम के दाईं ओर केवल कॉलम का आकार बदल जाएगा ... सुनिश्चित करने के लिए msdn doco में गहराई से खोदने की आवश्यकता होगी। .. – kiwipom

+0

हां, आपको वास्तव में आशीर्वाद दें! –

8

एक GridSplitter एक ग्रिड में अपने कॉलम के भीतर रखा जाना चाहिए:

यहाँ कि उदाहरण के लिए XAML पैड कोड है। मुझे यकीन नहीं है कि मैं आपकी समस्या पूरी तरह से समझता हूं, लेकिन मेरा सुझाव है कि आप 5 कॉलमडिफिनिशन के साथ ग्रिड बनाने का प्रयास करें। सामग्री के लिए ग्रिडस्प्लिटर और कॉलम 0, 2 और 4 रखने के लिए कॉलम 1 और 2 का उपयोग करें।

GridSplitter MSDN doc इस पर एक नमूना है कि यह कैसे करें।

<Grid.ColumnDefinitions> 
    <ColumnDefinition/> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition/> 
</Grid.ColumnDefinitions> 
... 
<GridSplitter Grid.Column="1" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Stretch" 
      Background="Black" 
      ShowsPreview="True" 
      Width="5" 
      /> 
+0

मुझे लगता है कि कोशिश की और के लिए काम किया बदलते अब दोनों कॉलम टूटा हुआ है। बदले गए एक्सएएमएल के लिए मेरा अद्यतन प्रश्न देखें। – Vaccano

+0

यह भी ध्यान रखें कि यह समस्या केवल 3 कॉलम स्थिति पर मौजूद है। दो कॉलम ठीक काम करते हैं ... – Vaccano

+0

मुझे लगता है कि आपने क्षैतिज एलाइनमेंट = "सेंटर" को मेरे द्वारा पोस्ट किए गए नमूने की तरह कोशिश नहीं की है। :) खुशी है कि आप समस्या हल हो गया। –

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