2011-04-05 18 views
15

मुझे एक आकार बदलने योग्य विस्तारक की तरह कुछ चाहिए।विस्तारक और ग्रिड (आकार बदलने योग्य विस्तारक) को मिलाएं

<Grid HorizontalAlignment="Left"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="2" /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <Expander Grid.Column="0" ExpandDirection="Right"> 
      ... 
    </Expander> 

    <GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 

    ... 
</Grid> 

इस के साथ समस्या: मेरे मूल विचार कुछ इस तरह था मैं एक बड़ा खाली स्थान मिला अगर मैं ग्रिड स्प्लिटर ले जाएँ और विस्तारक collaps। पूरे कॉलम को कैसे पतन कर सकते हैं? या वहां विस्तारक "आकार बदलने योग्य"

+0

मैं एक ही समस्या थी और यह है [मेरे समाधान] [1] [1]: http://stackoverflow.com/a/31027745/2219089 – Bashnia007

उत्तर

19

सुनिश्चित नहीं है कि आप क्या कर रहे हैं पूरा करें लेकिन मुझे लगता है कि GridExpander.Content का हिस्सा होना चाहिए, क्या यह आपके लिए काम करेगा?

<Expander Header="Test" ExpandDirection="Right" HorizontalAlignment="Left" Background="LightBlue"> 
    <Expander.Content> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="5"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="Lorem ipsum dolor sit"/> 
      <GridSplitter Grid.Column="1" Width="5" ResizeBehavior="PreviousAndCurrent" ResizeDirection="Columns"/> 
     </Grid> 
    </Expander.Content> 
</Expander> 

संपादित करें: सब पहले कॉलम से ट्रिगर निकाला गया के रूप में यह अनावश्यक लग रहा था।

इसके अलावा

: इस कार्य के लिए खड़ी GridSplitter के HorizontalAlignmentStretch करने के लिए सेट किया जाना चाहिए, अन्यथा यह डिफ़ॉल्ट रूप से शून्य चौड़ाई होगा (निश्चित रूप से सब कुछ है कि उन्मुखीकरण विशेष रूप में अच्छी तरह से अनुकूलित किया जाना चाहिए, लेकिन यह स्पष्ट है)

क्षैतिज अलगाव वास्तविकता पर निर्भरता के लिए माइक्रोसॉफ्ट .NET संपत्ति एक्सेसर है। यह विशेष निर्भरता संपत्ति अक्सर अपने स्पष्ट "डिफ़ॉल्ट" मान को उप-वर्गीकृत तत्वों, विशेष रूप से नियंत्रणों में अलग-अलग सेट करती है। [...] उदाहरण के लिए, लेबल नियंत्रण के लिए क्षैतिज असाइनमेंट का स्पष्ट "डिफ़ॉल्ट" बाएं हो जाएगा, भले ही लेबल फ्रेमवर्क एलिमेंट से सीधे क्षैतिज एलाइनमेंट प्राप्त करता है। ऐसा इसलिए है क्योंकि उस मान को शैली के नियंत्रण टेम्पलेट के भीतर, लेबल की डिफ़ॉल्ट शैली में रीसेट किया गया था।

+0

बढ़िया, यह वही है जो मुझे चाहिए! – SACO

+0

मेरे जीवन के लिए मुझे क्षैतिज काम करने के लिए ऐसा कुछ नहीं मिल सकता है! – DaveO

+0

@ डेवओ: उत्तर में मेरा नोट देखें। –

1

हो सकता है कि यह आपके "कॉलम पतन" समस्या को हल करने में मदद मिलेगी बनाने के लिए एक और तरीका है

XAML:

<Grid>Name="expGrid" में जोड़ें और में जोड़ने <Expander>Collapsed="Expander_Collapsed"

सी # कोड:

private void Expander_Collapsed(object sender, RoutedEventArgs e) 
{ 
    var colomnIndex = Grid.GetColumn(sender as Expander); 
    var colomn = expGrid.ColumnDefinitions[colomnIndex]; 
    colomn.Width = GridLength.Auto; 
} 
+0

मैं अतिरिक्त कोड के बिना इस का समाधान चाहते हैं । – SACO

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