2009-06-03 20 views
8

मैं Canvas चरम चौड़ाई के साथ क्षैतिज रूप से फैला कैसे बना सकता हूं? यह माता-पिता Canvas है, इसलिए इसमें कोई माता-पिता नहीं हैं, केवल बच्चे हैं।एक डब्ल्यूपीएफ कैनवास क्षैतिज

XAML स्रोत: यह मिश्रण http://resopollution.com/xaml.txt

उत्तर

14

अपने यूआई में शीर्ष स्तर तत्व के रूप में Grid का उपयोग करें - यह इसके कंटेनर को भरने के लिए फैल जाएगा। फिर CanvasGrid के अंदर रखें और यह वही तरीका व्यवहार करेगा जो आप चाहते हैं।

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Canvas Background="Blue"/> 
</Grid> 

यह मेरे लिए काम करता है। कुंजी आपका शीर्ष स्तर यूआई तत्व है। जबकि Grid डिफ़ॉल्ट रूप से सभी उपलब्ध स्थान भरता है, Canvas es उनकी सामग्री की मांग के रूप में केवल उतना ही अधिक स्थान लेता है।

+0

क्या आपको पता है कि" x: class = "विशेषता आवश्यक है? मैंने ग्रिड का उपयोग रोकथाम के रूप में करने की कोशिश की लेकिन कुछ कारणों से सब कुछ गायब हो गया। – resopollution

+0

<ग्रिड xmlns = "http://schemas.microsoft.com/winfx/ 2006/xaml/प्रस्तुति "xmlns: x =" http://schemas.microsoft.com/winfx/2006/xaml "> <कैनवास क्षैतिज चेतावनी =" खिंचाव "वर्टिकल अलाइनमेंट =" खिंचाव "> <कैनवास।संसाधन> यह मेरे लिए काम नहीं किया = ( – resopollution

+1

आप कैसे परीक्षण कर रहे हैं मैं kaxaml में इस चिपकाया और यह मेरे लिए काम करता है, तो आप एक्स की जरूरत नहीं है? वर्ग विशेषता: <ग्रिड xmlns = "http : //schemas.microsoft.com/winfx/2006/xaml/presentation " xmlns: x =" http://schemas.microsoft.com/winfx/2006/xaml "> <कैनवास पृष्ठभूमि =" नीला "/> –

1

आप एक गोदी पैनल का उपयोग यह उपलब्ध चौड़ाई को भरने के लिए प्राप्त करने के लिए कर सकता है में प्रदर्शित करता है। नियंत्रण की एक डॉक पैनल सूची में अंतिम आइटम शेष स्थान को भरने के लिए स्वचालित रूप से फैलाया जाता है।

<DockPanel> 
    <Canvas /> 
</DockPanel> 
+0

टैग के लिए ऐसा करने का कोई त्वरित तरीका है? – resopollution

+0

मैंने ऊँचाई और चौड़ाई संपत्ति को हटाने की कोशिश की लेकिन सब कुछ गायब हो गया। – resopollution

1

कैनवास स्वचालित रूप से ऐसा करना चाहिए, जब तक आप मैन्युअल रूप से ऊंचाई और/या चौड़ाई निर्धारित नहीं कर लेते। कैनवास को रखने की कोशिश कर रहे आप किस तरह का नियंत्रण कर रहे हैं? क्या आप अपना कोड पोस्ट कर सकते हैं?

+0

मैंने अपना कोड पोस्ट कर दिया है। कैनवास पूरे आवेदन का मुख्य मूल तत्व है। – resopollution

+0

मैंने ऊँचाई और चौड़ाई संपत्ति को हटाने की कोशिश की लेकिन सब कुछ गायब हो गया। – resopollution

4

मेरा अनुमान है कि आप
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

यदि यह काम नहीं करता है की कोशिश की है, तुम कर सकते हो तो क्या युक्त ActualWidth और ActualHeight गुणों के कैनवास के Width और Height गुण बाध्य है खिड़की।

+0

कैनवास। हॉरिज़ोंटल एलाइनमेंट = क्षैतिज एलाइनमेंट। स्ट्रेच सी # कोड के अंदर किया जाता है? मुझे केवल एक्सएएमएल तक पहुंच है। इसके अलावा मेरे पास एक विंडो भी नहीं है = (जब भी मैं बाइंडिंग एलिमेंट करता हूं, तो मेरा Silverlight ऐप दुर्घटनाग्रस्त हो जाता है। – resopollution

+1

थोड़ा देर हो चुकी है, लेकिन एक ही समस्या वाले किसी के लिए: '<<कैनवास क्षैतिज एलाइनमेंट =" स्ट्रेच "> "एक्सएएमएल कोड में मेरे मामले में बस ठीक काम किया। और यह आपको प्रत्येक कैनवास को ग्रिड में मुक्केबाजी से बचाता है (विशेष रूप से यदि उनमें से कई हैं)। –

1

समस्या यह है कि आप Height और Width निर्दिष्ट कर रहे हैं। इन गुणों के बिना, डिजाइनर में नियंत्रण गायब हो सकता है, लेकिन जब आप कैनवास को किसी अन्य नियंत्रण में डालते हैं तो इसे उचित आकार में रखना चाहिए।

अगर मैं सही ढंग से याद है, WPF के अगले संस्करण 'DesignWidth' और 'DesignHeight' गुण है कि आप प्रभावशाली यह माप है जब अन्य नियंत्रण में डाला बिना किसी दिए गए आकार के साथ डिजाइनर में नियंत्रण दिखाए जाने की अनुमति होगी।

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