मैं जानता हूँ कि इस तथ्य के बाद कई वर्षों है, लेकिन मैं हाल ही में भाग गया इस सवाल के दौरान मैं एक जैसी समस्या से निपट रहा था। इस तरह मैंने इसे हल किया। समाधान मेरी समस्या के लिए विशिष्ट है, लेकिन वांछित आकार बदलने वाले व्यवहारों को प्राप्त करने के लिए बदला जा सकता है।
पहले विंडो को सेट करें ताकि शुरुआत में यह अपनी सामग्री को फिट करने के लिए आकार दे।
<Window ...
SizeToContent="WidthAndHeight" >
अगला मैं प्रत्येक एम्बेडेड नियंत्रण सेट करता हूं ताकि यह वांछित चौड़ाई और ऊंचाई की रिपोर्ट कर सके। अधिकांश निर्मित नियंत्रण आपके लिए यह करते हैं। आप इसे MeasureOverride को ओवरराइड करके कस्टम नियंत्रण के लिए कर सकते हैं या आप नियंत्रण के लिए केवल चौड़ाई और ऊंचाई सेट कर सकते हैं।इसे न्यूनतम आकार बनाएं जिसे आप नियंत्रण प्राप्त करना चाहते हैं।
<MyControl Name="_MyControlName" Width="640" Height="480" />
नियंत्रण के व्यवहार को प्रभावित करने वाले इन 'कठिन' कोडित मूल्यों के बारे में चिंता न करें। हम उस के साथ सौदा करते हैं। अब जब विंडो प्रदर्शित होती है तो यह स्वचालित रूप से आपके नियंत्रणों को फिट करने के लिए स्वयं को समायोजित कर देगी।
अगला विंडो लोड किए गए ईवेंट की सदस्यता लें।
<Window ...
SizeToContent="WidthAndHeight" Loaded="Window_Loaded" >
विंडो लोड की गई घटना में आप अपनी खिड़की के आकार और उसके नियंत्रण में समायोजित कर सकते हैं। आप इसे बना सकते हैं ताकि आपके नियंत्रण आकार बदल सकें। आप विंडो के आकार के लिए न्यूनतम आकार निर्धारित कर सकते हैं जिसे आपने अभी तक रखा था। यहां का लाभ यह है कि आपने लेआउट सिस्टम को आपके लिए एक अच्छा लेआउट खोजने की अनुमति दी है। आप इसके काम का लाभ उठाना चाहते हैं।
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// We know longer need to size to the contents.
ClearValue(SizeToContentProperty);
// We want our control to shrink/expand with the window.
_MyControlName.ClearValue(WidthProperty);
_MyControlName.ClearValue(HeightProperty);
// Don't want our window to be able to get any smaller than this.
SetValue(MinWidthProperty, this.Width);
SetValue(MinHeightProperty, this.Height);
}
जो आप विंडो_लोडेड विधि में रखते हैं वह उस व्यवहार पर निर्भर करेगा जिसे आप पूरा करने की कोशिश कर रहे हैं।
आशा है कि इससे कुछ अन्य लोगों को समय बचाने में मदद मिल सकती है।
आप किस प्रकार के लेआउट कंटेनर का उपयोग कर रहे हैं (प्रवाह, आदि)? –
मैं वास्तव में एक स्टैकपैन का उपयोग कर रहा हूं लेकिन मैं अपने लक्ष्यों को प्राप्त करने के लिए जो कुछ भी कर सकता हूं उसका उपयोग कर सकता हूं। –
क्या आपने कभी अपनी समस्या पर एक प्रस्ताव प्राप्त किया है? – CodeWarrior