स्क्रीन पर WPF ऐप कैसे केंद्रित करें?


110

मैं प्राथमिक स्क्रीन पर अपने WPF एप्लिकेशन को स्टार्टअप पर केंद्रित करना चाहता हूं। मुझे पता है कि मुझे myWindow.Left और myWindow.Top सेट करना होगा, लेकिन मुझे मूल्य कहां से मिलेंगे?

मैंने पाया System.Windows.Forms.Screen.PrimaryScreen, जो स्पष्ट रूप से WPF नहीं है। क्या कोई WPF विकल्प है जो मुझे स्क्रीन रिज़ॉल्यूशन या ऐसा कुछ देता है?

जवाबों:


143

इसे अपने विंडो कंस्ट्रक्टर में डालें

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET फ्रेमवर्क इसमें शामिल: 4, 3.5, 3.0

.NET फ्रेमवर्क क्लाइंट प्रोफाइल में समर्थित: 4, 3.5 SP1


2
मेरे लिए काम किया (.NET 4) और मुझे WindowStartupLocation.CenterOwnerकुछ बच्चे की खिड़कियों के लिए भी पसंद है
Stonetip

डिफ़ॉल्ट है Manual। Ref: msdn.microsoft.com/en-us/library/…
CJBS


49

आप अभी भी WPF ऐप से स्क्रीन क्लास का उपयोग कर सकते हैं। आपको बस अपने आवेदन से System.Windows.Forms विधानसभा को संदर्भित करना होगा। एक बार जब आप ऐसा कर लेते हैं, (और नीचे दिए उदाहरण के लिए System.Drawing को संदर्भित करते हैं):

Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;

... ठीक काम करता है।

क्या आपने अपनी मुख्य विंडो प्रॉपर्टी WindowStartupLocation को सेंटरस्क्रीन पर सेट करने पर विचार किया है?


1
ओह ... मुझे नहीं पता था कि एक। धन्यवाद।
मार्सेल बी

1
मैं WindowStartupLocation की तलाश कर रहा था; मुझे पता था कि मैंने पहले देखा था, बहुत उपयोगी है!
चोकोजोश

@ मिचेल पेट्रोत्ता धन्यवाद। मुझे गुणों को अधिक बार देखना चाहिए।
meffordm

8

PresentationFramework में SystemParameters वर्ग के बारे में क्या? इसमें एक WorkArea प्रॉपर्टी है जो आपको लगती है।

लेकिन, क्यों Window.indowStartupLocation काम नहीं करेगा? सेंटरस्क्रीन एनम मूल्यों में से एक है। क्या आपको केंद्र को मोड़ना है?


शानदार खोज :) कम से कम मेरे लिए केंद्र स्क्रीन के साथ समस्या यह है कि, मेरा लॉग इन विंडो छोटा है और यदि उपयोगकर्ता एप्लिकेशन को खोलते समय इधर-उधर क्लिक करता है, तो यह अक्सर ध्यान नहीं देता और पृष्ठभूमि में चला जाता है। लेकिन अगर मैं इसे केंद्र में प्राथमिक प्रदर्शन पर खोल सकता हूं तो यह ठीक काम करता है। नोट: अधिकांश उपयोगकर्ताओं के पास 4 + स्क्रीन हैं
मिशैल साइकेन

4 + स्क्रीन, मुझे में गिनती!
user7116

7

आपको System.Windows.Formsअपने आवेदन से विधानसभा को संदर्भित करने की आवश्यकता नहीं है । इसके बजाय, आप उपयोग कर सकते हैं System.Windows.SystemParameters.WorkArea। इस के बराबर है System.Windows.Forms.Screen.PrimaryScreen.WorkingArea!


2

कोई डब्ल्यूपीएफ समकक्ष नहीं है। System.Windows.Forms.Screenहालांकि अभी भी .NET फ्रेमवर्क का हिस्सा है और इसे WPF से उपयोग किया जा सकता है।

देखें इस सवाल का अधिक जानकारी के लिए, लेकिन आप का उपयोग करके स्क्रीन से संबंधित कॉल उपयोग कर सकते हैं WindowInteropHelperअपने WPF नियंत्रण रैप करने के लिए वर्ग।


2
var window = new MyWindow();

स्क्रीन के उपयोग के केंद्र के लिए:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

मूल विंडो उपयोग के केंद्र के लिए:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.