2014-04-04 13 views
11

मेरे पास एक दृश्य में निम्नलिखित मार्क-अप है। जब मुझे दृश्य के लिए स्टार्ट-अप कोड के दौरान WindowContainer.Width मिलता है, तो यह NaN देता है।मेरी ग्रिड की चौड़ाई NaN क्यों है?

<Border BorderThickness="10"> 
    <StackPanel x:Name="Panel" Orientation="Vertical" > 
    <Grid x:Name="WindowContainer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Loaded="WindowContainer_OnLoaded"> 
     <delphi:Win32WindowHost x:Name="Host" /> 
    </Grid> 
    <TextBlock x:Name="InfoTextBlock" HorizontalAlignment="Right" /> 
    </StackPanel> 
</Border> 

Stretch इसकी संपूर्ण सामग्री को समायोजित करने के लिए ग्रिड खिंचाव, या अपने कंटेनर को भरने के लिए कर रहा है? मैं इसे कंटेनर, भरने के लिए खिंचाव करना चाहता हूं, और उचित double चौड़ाई है जिसका उपयोग मैं एक ही आकार के लिए एक फ़्लोटिंग विंडो आकार के लिए कर सकता हूं।

+5

'डबल एनएएन' 'चौड़ाई' संपत्ति का डिफ़ॉल्ट मान है। इसका मतलब है कि कोई चौड़ाई स्पष्ट रूप से सेट नहीं है। किसी तत्व की वास्तविक चौड़ाई प्राप्त करने के लिए आपको हमेशा 'ActualWidth' प्रॉपर्टी का उपयोग करना चाहिए। – Clemens

उत्तर

16

Does Stretch make the grid stretch to accomodate all its content, or to fill its container?

के बारे में MSDN से HorizontalAlignment="Stretch":

बाल तत्वों पेरेंट तत्व के आवंटित लेआउट जगह को भरने के फैला रहे हैं। स्पष्ट Width और Height मानों को प्राथमिकता दी गई है।


Why is my Grid's width NaN?

NaN मतलब करने के लिए "सेट नहीं" है। FrameworkElement डब्ल्यूपीएफ में कई नियंत्रणों के लिए बेस क्लास है और यदि आप ऊंचाई और चौड़ाई गुणों को स्पष्ट रूप से सेट नहीं करते हैं तो क्लास कन्स्ट्रक्टर में NaN का डिफ़ॉल्ट मान होगा।


When I get WindowContainer.Width during start-up code for the view, it returns NaN

Width के बजाय ActualWidth मिलता है, कोशिश इस मामले में, क्योंकि:

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

+1

मुझे ग्रिड की 'ऑन-आरंभिक' घटना में 0.0 मिलता है। क्या मुझे बाद में स्टार्टअप में मूल्य मिल रहा है? – ProfK

+1

@ProfK: हां, उदाहरण के लिए, इन मानों को 'लोड किया गया =" विंडोकंटनर_ऑनलोडेड "में प्राप्त करने का प्रयास करें। –

+0

मुझे उस घटना में 'ActualWidth' के लिए सही मान मिलता है, लेकिन' ActualHeight' अभी भी 0.0 – ProfK

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