2011-01-12 17 views
10

में डॉकिंग/भरना यह इतना आसान सवाल प्रतीत होता है, लेकिन मैं एक घंटे की कोशिश कर रहा हूं और इसे समझने में प्रतीत नहीं होता।डब्ल्यूपीएफ

मैं बस इतना करना चाहता हूं कि मेनविंडो को कैनवास से भरें। मुझे यह अनुमति देने के लिए कोई गुण नहीं मिला, और एकमात्र तरीका यह है कि मैं ऐसा करने के बारे में सोच सकता हूं Canvas.Width/Height = MainWindow.Width/Height सेट करना है, लेकिन मुझे हर बार खिड़की का आकार बदलना होगा।

एक पैरेंट कंटेनर में एक तत्व डॉकिंग WinForms में आसान था।

उत्तर

20

बस कैनवास सेट करें। HorizontalAlignment और VerticalAlignment "खिंचाव" के लिए। इससे कैनवास इसके यूआई तत्व से उपलब्ध स्थान को भरने का कारण बन जाएगा। बस स्पष्ट रूप से चौड़ाई/ऊंचाई निर्दिष्ट नहीं करना सुनिश्चित करें।

XAML में, यह सिर्फ है: अपने कैनवास चौड़ाई और XAML में ऊंचाई के लिए

<Window ...Other window props... > 
    <Canvas HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <!-- Canvas items here... --> 
    </Canvas> 
</Window> 
+3

और बस सुनिश्चित करें कि आप सेट नहीं किया है चौड़ाई/ऊंचाई बनाने गुण आपके कैनवास पर स्पष्ट रूप से। – RQDQ

+0

यह काम करता है। मुझे पता है मैंने पहले कोशिश की थी और यह काम नहीं कर रहा था, लेकिन कौन जानता है। धन्यवाद। - संपादित करें: मैं शायद चौड़ाई/ऊंचाई निर्धारित करता हूं। – Eric

+0

बेस्ट। किसी और चीज पर निर्भर नहीं है। –

2

पुट इस।

Width="{Binding Path=ActualWidth, ElementName=Window1}" 
Height="{Binding Path=ActualHeight, ElementName=Window1}" 

तदनुसार इसे बदलना चाहिए जब आप विंडो का आकार बदलने

+2

यह बेहतर कैसे है? मुझे लगता है कि इस तरह के बाध्यकारी करने से एरिक का जवाब अधिक सरल/मजबूत है। – RQDQ

0

कोई बात नहीं, ऐसा लगता है कि आप जोड़ने के लिए एक DockPanel:

<DockPanel Name="dockPanel1"> 
    <Canvas Name="canvas1" Background="White"></Canvas> 
</DockPanel> 
+0

ऐसा करने के कई तरीके हैं। यह थोड़ा अधिक है, लेकिन ठीक काम करेगा। – RQDQ

+2

युक्ति: उन नियंत्रणों को अपने नियंत्रणों पर न छोड़ें। उन्हें सार्थक नाम दें। जब आप यह जांचने की ज़रूरत नहीं है कि लाइसेंस प्लेट नंबर टेक्स्टबॉक्स 23 या टेक्स्टबॉक्स 17 में है तो आप खुश रहेंगे। अभी तक बेहतर है, अगर आपको उन्हें संदर्भित करने की आवश्यकता नहीं है तो उन्हें बिल्कुल नाम न दें: WPF नामों में वैकल्पिक हैं। –

+0

@ मार्टिन्हो, मुझे नहीं पता था कि नाम वैकल्पिक थे। यह सुविधाजनक है। धन्यवाद। – Eric

3

WPF में आप एक के अंदर अपने आइटम रखकर डॉकिंग कर सकते हैं डॉकपनेल और डॉक विरासत संपत्ति का उपयोग कर। हालांकि, अगर आप पूरे खिड़की चाहते हैं एक कैनवास होने के लिए, बस यह तो खिड़की की सामग्री कैनवास, और नहीं पैनल का एक और प्रकार है:

<Window ...> 
    <Canvas> 
     <!-- blah blah --> 
    </Canvas> 
</Window>