2013-09-02 10 views
5

मैं StackPanel में पिछले तत्व के साथ खाली जगह को भरने की जरूरत है (फ़्रेम):WPF StackPanel खड़ी फ्रेम पूरी ऊंचाई

<DockPanel> 
     <StackPanel Orientation="Vertical"> 
      <Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" /> 
      <Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" /> 
     </StackPanel> 
    </DockPanel> 

_mainFrame - नीचे

उत्तर

5

StackPanel को _menu फ्रेम से खाली जगह को भरने नहीं है तत्वों को "शेष स्थान भरने" की अनुमति देने के लिए लेआउट कंटेनर। StackPanel के पास अन्य लेआउट कंटेनर के बीच एक विशिष्ट उद्देश्य है। यह लंबवत/क्षैतिज वस्तुओं को "ढेर" करना है और जो उपलब्ध है उससे बच्चों की वांछित ऊंचाई के आधार पर काम करता है। यह अपने बच्चों को यह जानने की अनुमति देगा कि वे कितनी जगह चाहते हैं।

आपकी आवश्यकता के लिए, आप या तो DockPanel/Grid के साथ जाना चाहते हैं। इन दोनों नियंत्रणों में माता-पिता के कंटेनर को उपलब्ध होने के आधार पर बच्चों के आयाम को "सीमित" करने की अनुमति होगी।

आपके उदाहरण में आपके पास पहले से ही DockPanel है। हालांकि आपने StackPanel डाल दिया है क्योंकि यह बच्चा है और यह एकमात्र बच्चा है जो ज्यादा समझ में नहीं आता है। जब आप लेआउट में 1 से अधिक बच्चे आइटम डालते हैं तो आप लेआउट कंटेनर को आजमा सकते हैं और उपयोग करना चाहते हैं। इस मामले में स्टैकपैनल DockPanel का एकमात्र बच्चा है।

एक DockPanel का उपयोग करके अपने आवश्यकता के लिए, आप के साथ जा सकते हैं

<DockPanel> 
    <Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" DockPanel.Dock="Top" /> 
    <Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" /> 
</DockPanel> 

DockPanel डिफ़ॉल्ट रूप से LastChildFill="True" का उपयोग करता है इस प्रकार घोषणा में दूसरे मद शेष स्थान उपलब्ध भरने के लिए जो तुम क्या जरूरत है फैला दिया जाएगा । यदि आप इस संपत्ति को झूठी पर सेट करते हैं, तो यह इसे फैला नहीं देगा।

एक Grid साथ एक ही बात करने के लिए:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" /> 
    <Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" Grid.Row="1" /> 
</Grid> 
आपकी आवश्यकता के लिए

, मैं DockPanel साथ जाने के लिए पसंद करते हैं, Grid विधि बस कुछ अच्छा के बारे में जागरूक हो सकता है और शायद उपयोग करने के लिए है जब स्थिति इसकी मांग है।

+0

+1, हमेशा के रूप में सुपर उत्तर। –

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