2009-06-11 11 views
11

मेरे पास StackPanel है जिसमें StackPanel और कुछ अन्य आइटम हैं। पहले StackPanel में एक लंबवत अभिविन्यास है, आंतरिक में क्षैतिज अभिविन्यास है। आंतरिक में TreeView और ListView है, मैं उन्हें विंडो की चौड़ाई को विस्तारित और फिट करना चाहता हूं, जिसे मैंने विंडो द्वारा सेट किया है और उपयोगकर्ता को बदलने की अनुमति देता है। खिड़की की ऊंचाई फिट करने के लिए मुझे बाहरी StackPanel भी पसंद आएगा। मैं यह कैसे करु?WPF में सभी उपलब्ध स्थान को फिट करने के लिए डॉकपैनेल में आइटम कैसे बनाएं?

संपादित करें: मैं एक DockPanel उपयोग करने के लिए परिवर्तित कर दिया है, और मैं DockPanel.Dock गुण तत्वों में से प्रत्येक में सही ढंग से निर्धारित किया है, और विकलांग LastChildFill dockpanels दोनों में है, लेआउट अभी भी खिंचाव नहीं है।

कोड:

<Window x:Class="Clippy.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="400" Width="600" MinHeight="400" MinWidth="600" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged"> 
    <DockPanel Name="wrapperDockPanel" LastChildFill="False"> 
     <Menu Height="22" Name="mainMenu" Width="Auto" DockPanel.Dock="Top" /> 
     <ToolBar Height="26" Name="mainToolBar" Width="Auto" DockPanel.Dock="Top" /> 
     <DockPanel Height="Auto" Name="contentDockPanel" DockPanel.Dock="Top" LastChildFill="False"> 
      <TreeView Name="categoryTreeView" /> 
      <ListView Name="clipListView" /> 
     </DockPanel> 
     <StatusBar Height="23" Name="mainStatusBar" DockPanel.Dock="Top" /> 
    </DockPanel> 
</Window> 
+0

क्या हम कोड देख सकते हैं? – Brad

+1

आप LastChildFill = "गलत" क्यों सेट करते हैं? True का डिफ़ॉल्ट मान ListView को स्थान भर देगा। –

+0

हेनक के साथ भी सहमत ... –

उत्तर

7

यह करना चाहिए - मैंने इसे सेट अप किया ताकि ट्री व्यू और लिस्टव्यू ने मुख्य दृश्य 50/50 साझा किया; यदि आप इसे नहीं चाहते हैं, तो इसे 'ऑटो' और '*' या कुछ पर सेट करें। अपने लाभ के लिए "LastChildFill" का प्रयोग करें!

<Window x:Class="Clippy.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="400" Width="600" MinHeight="400" MinWidth="600" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged"> 

    <DockPanel LastChildFill="True"> 
     <Menu Width="Auto" DockPanel.Dock="Top" /> 
     <ToolBar Width="Auto" DockPanel.Dock="Top" /> 
     <StatusBar DockPanel.Dock="Bottom" /> 

     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="0.5*" /> 
       <RowDefinition Height="0.5*" /> 
      </Grid.RowDefinitions> 

      <TreeView Name="categoryTreeView" Grid.Row="0" /> 
      <ListView Name="clipListView" Grid.Row="1" /> 
     </Grid> 
    </DockPanel> 

</Window> 
0

सेट चौड़ाई और ऊंचाई गुण "ऑटो"

11

एक DockPanel उपयोग के बजाय करने के लिए। StackPanel स्पष्ट रूप से दृश्य स्थान की परवाह नहीं करता है, जबकि डॉकपैनल उपलब्ध स्थान के आधार पर इसकी सभी आकार की गणना करता है।

अद्यतन:

इसके अलावा, मेरे अनुभव में, एक दृश्य में खिड़की के शरीर डाल, और केवल दृश्य होने में खिड़की एक बेहतर ऑटो आकार के अनुभव के लिए बनाता है।

कुछ कारणों से सभी बच्चों को सीधे विंडो में डालने से ऑटो आकार बहुत अच्छा नहीं लगता है।

अद्यतन 2:

मैं तत्व है कि आप को फैलाने के लिए (भरने) अप्रयुक्त स्थान चाहते से स्पष्ट DockPanel.Dock विशेषता को दूर करेंगे।

+0

हाँ, डॉकपनेल अच्छी तरह से काम करता है। सिल्वरलाइट में भी काम करता है। –

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