मेरा google और stackoverflow search-fu मुझे विफल कर दिया है, इसलिए मैं इस प्रश्न को समुदाय में प्रस्तुत करता हूं।स्टैकपैनल के अंदर ग्रिड: ऑटो और * अजीब तरीके से क्यों व्यवहार करते हैं?
(यह सभी, VS2010 और .NET 4.0 का उपयोग कर उत्पन्न होता है एक रिक्त डिफ़ॉल्ट WPF समाधान में)
निम्नलिखित XAML पर विचार करें:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
क्या आप "aborder2" की चौड़ाई भविष्यवाणी हो सकता है?
यदि आपने "20 पिक्सल" अनुमान लगाया है, तो आप गलत होंगे। सही जवाब 110 पिक्सल है।
इस XAML पर विचार करें:
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Name="aborder" Grid.Column="0" Grid.ColumnSpan="2"
Background="Red" Width="200"/>
<Border Name="aborder2" Background="Green"/>
</Grid>
</StackPanel>
क्या आप "aborder2" की चौड़ाई भविष्यवाणी होने के लिए?
यदि आपने 20 पिक्सेल या 110 पिक्सेल अनुमान लगाए हैं, तो आप गलत होंगे। सही जवाब 200 पिक्सल है।
मैं इसे समझ नहीं सकता और यह मुझे पागल कर रहा है। ऐसा लगता है कि उत्तर स्पष्ट होना चाहिए; स्पष्ट रूप से ऑटो-भरने वाले ग्रिड कॉलम और स्टैपपनेल के बीच कुछ बातचीत होती है जो ग्रिड को फिक्र करने का कारण बनती है। लेकिन ऐसा लगता है कि भावना नहीं है - जो भी नियम इस व्यवहार को नियंत्रित कर रहे हैं वह मनमाने ढंग से प्रतीत होता है। 110 पिक्सेल क्यों? 109 पिक्सल या 100 पिक्सेल क्यों नहीं? मैं समझूंगा कि ऑटो आकार का कॉलम पूरी तरह से या कुछ विस्तार करने में विफल रहा है, लेकिन निश्चित चौड़ाई कॉलम को यादृच्छिक रूप से इसकी चौड़ाई को अनदेखा करने के लिए मुझे डेवलपर का जला हुआ खोल खोल दिया गया है।
कोई भी मदद या मार्गदर्शक रोशनी की सराहना की जाएगी!
के रूप में प्रस्तुत करने के लिए मजबूर करने के लिए स्तंभ 1 क्यों aborder2 एक Grid.Column नहीं मिलता है निर्धारित कर सकते हैं? – 0x4f3759df
मैंने इसे एक में रखना नहीं सोचा था क्योंकि इसे कॉलम 0 पर डिफ़ॉल्ट होना चाहिए। मैंने अभी इसका परीक्षण किया है और कॉलम को स्पष्ट रूप से सेट करने में कोई फर्क नहीं पड़ता है। – pfw
आपके लिए उत्तर है लेकिन मुझे पहले घर पर जाना है –