2012-11-29 11 views
14

को भरने के लिए मैं एक कैनवास के अंदर आइटम के साथ एक Dockpanel है। डॉकपनेल और कोई अन्य आइटम (ग्रिड इत्यादि) जो मैं कैनवास के अंदर रखता हूं, केवल अपनी न्यूनतम आवश्यक जगह लेता हूं। मैं पूरे कैनवास को भरने के लिए इन वस्तुओं को कैसे फैला सकता हूं?खिंचाव आइटम कैनवास

<Canvas x:Name="InfoCanvas" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="72,53,0,0"> 
     <DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="ReferenceInfo" Canvas.Left="0" Canvas.Top="0"> 
      <TextBox x:Name="ReferenceAuthor" GotFocus="FieldEnter" LostFocus="FieldLeave" FontSize="16" FontFamily="Segoe UI Light" Text="Author" Foreground="Gray" Background="Transparent" DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" BorderThickness="0" Margin="0,2,0,2"/> 
      <TextBox x:Name="ReferenceTitle" GotFocus="FieldEnter" LostFocus="FieldLeave" FontSize="16" FontFamily="Segoe UI Light" Text="Title" Foreground="Gray" Background="Transparent" DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" BorderThickness="0" Margin="0,2,0,2"/> 
      <TextBox x:Name="ReferenceDate" GotFocus="FieldEnter" LostFocus="FieldLeave" FontSize="16" FontFamily="Segoe UI Light" Text="Date" Foreground="Gray" Background="Transparent" DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" BorderThickness="0" Margin="0,2,0,2"/> 
     </DockPanel> 
    </Canvas> 

धन्यवाद!

उत्तर

31

Canvas पैनल वास्तव में है कि समर्थन नहीं करता।

यह बहुत ही बुनियादी है - यह केवल आपके बिल्कुल ऊपर, नीचे, बाएं और दाएं का उपयोग करके बच्चों की स्थिति के लिए अनुमति देता है, और यह हमेशा उन्हें सिर्फ अंतरिक्ष वे की जरूरत है देता है।

तो आम तौर पर आप सिर्फ 1 कॉलम और 1 पंक्ति के बजाय साथ एक Grid का प्रयोग करेंगे।

हालांकि की चौड़ाई और ऊंचाई Canvas की चौड़ाई और ऊंचाई पर बाध्य कर सकते हैं। इस तरह DockPanel हमेशा Canvas भर देगा।

<DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
      Margin="0,0,0,0" x:Name="ReferenceInfo" Canvas.Left="0" Canvas.Top="0" 
      Width="{Binding ActualWidth, ElementName=InfoCanvas}" 
      Height="{Binding ActualHeight, ElementName=InfoCanvas}"> 
+0

धन्यवाद! मैं यह आवश्यक अभी भी अपने एनीमेशन के लिए एक कैनवास होने के लिए: डी – JosephGarrone

+0

एक समस्या मैं भी हो रही थी के लिए एक आकर्षण काम किया:) –

+0

+ 1..thanks यह बहुत अच्छा – ygoku

2

आप क्या कर सकते है:

<Grid> 
    <Canvas x:Name="InfoCanvas"> 
     <!--Elements with canvas layout here--> 
    </Canvas> 
    <DockPanel x:Name="ReferenceInfo"> 
     <!--Elements with dockpanel layout here--> 
    </DockPanel> 
</Grid> 

इस तरह एक ग्रिड में दोनों पैनलों लपेटकर आप तत्वों है कि आप छोड़ दिया है, कैनवास में शीर्ष आदि के सापेक्ष स्थिति नहीं कर सकते जगह कर सकते हैं के द्वारा। कैनवास और डॉकपैनल दोनों उपलब्ध स्थान भरेंगे। ध्यान दें कि डॉकपैनल में तत्वों को कैनवास के तत्वों के ऊपर प्रस्तुत किया जाएगा जब डॉकपैनल xaml में परिभाषित किया गया है। नहीं तो आप सिर्फ कैनवास निकाल देना चाहिए

मैं कोड तुम्हें तैनात संभालने हूँ, छद्म कोड है।

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