2012-03-15 21 views
13

मुझे कोड के पीछे से एक WPF ग्रिड गतिशील रूप से बनाने की आवश्यकता है। यह ठीक जा रहा है और मैं यह कर सकता है, ताकि मैं सामग्री की चौड़ाई सेट, लेकिन मैं ऐसा करने के लिए उन्हें सेट कर दिया जाता है, ताकि जब मैं विंडो का आकार बदलने नियंत्रण आकार फिर से कर रहे हैं गतिशीलसेट ग्रिड कॉलम/पंक्ति चौड़ाई/ऊंचाई गतिशील रूप से

var col = new ColumnDefinition(); 
col.Width = new System.Windows.GridLength(200); 
grid1.ColumnDefinitions.Add(col); 

यह XAML

का उत्पादन करेगा की जरूरत है क्या
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="200"></ColumnDefinition> 
</Grid.ColumnDefinitions> 

लेकिन मुझे * या प्रश्न चिह्न यानी उपयोग करने की आवश्यकता है।

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"></ColumnDefinition> 
</Grid.ColumnDefinitions> 

लेकिन WidthValue कोड से बनाते समय एक * या प्रश्न चिह्न का समर्थन नहीं करता है?

उत्तर

24

आप इस तरह यह निर्दिष्ट कर सकते हैं:

ऑटो कॉलम आकार के लिए:

GridLength.Auto 

स्टार कॉलम आकार के लिए:

new GridLength(1,GridUnitType.Star) 
5

मुझे लगता है कि यह मदद कर सकते हैं:

के लिए ऑटो कॉलम:

ColumnDefinition cd = new ColumnDefinition(); 
cd.Width = GridLength.Auto; 

या अनुपात ग्रिड लंबाई के लिए:

ColumnDefinition cd = new ColumnDefinition(); 
cd.Width = new GridLength(1, GridUnitType.Star); 

या देखने में: http://msdn.microsoft.com/en-us/library/system.windows.gridlength.aspx और http://msdn.microsoft.com/en-us/library/system.windows.gridunittype.aspx

Greez Shounbourgh

3

वहाँ ग्रिड ColumnDefinitions लिए चौड़ाई की स्थापना के 3 प्रकार है:

प्रतिशत कॉलम के लिए:

yourGrid.ColumnDefinitions[0].Width = new GridLength(1, GridUnitType.Star); 

XAML में:

<ColumnDefinition Width="1*"/> 

पिक्सेल कॉलम

yourGrid.ColumnDefinitions[0].Width = new GridLength(10, GridUnitType.Pixel); 
yourGrid.ColumnDefinitions[0].Width = new GridLength(10); 

लिए XAML में:

<ColumnDefinition Width="10"/> 

ऑटो स्तंभ

yourGrid.ColumnDefinitions[0].Width = GridLength.Auto; 

XAML में के लिए:

<ColumnDefinition Width="Auto"/> 

आशा है कि यह मदद करता है!

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