2012-11-16 24 views
21

जब कोई नया WPF अनुप्रयोग प्रोजेक्ट बनाया गया है, MainWindow.xaml, App.xaml और कक्षाओं के पीछे उनके संबंधित कोड स्वचालित रूप से जेनरेट किए जाते हैं। App.xaml में एक विशेषता है जो परिभाषित करता है जो खिड़की शुरू में चलाया जा रहा है नहीं है और डिफ़ॉल्ट रूप से यह StartupUri="MainWindow.xaml"WPF एप्लिकेशन के स्टार्टअप को कस्टमाइज़ कैसे करें?

मैं एक ही परियोजना में एक नया Dispatcher श्रेणी का निर्माण किया है। स्टार्टअप पर, मुझे उस श्रेणी का उदाहरण Dispatcher का निर्माण करना है और उसके बाद चलाने के लिए इसकी एक विधि है। वह विधि वास्तव में MainWindow विंडो बना और दिखाएगी। तो ऐसा करने के लिए मैं App.xaml या App.xaml.cs को कैसे संशोधित करूं? या, यदि यह App द्वारा नहीं किया जा सकता है, तो मुझे इसे कैसे कार्यान्वित करना चाहिए? धन्यवाद।

उत्तर

38

आप App.xaml से StartupUri विशेषता को हटा सकते हैं।

फिर, App.xaml.cs में OnStartup() के लिए ओवरराइड बनाकर, आप अपने Dispatcher कक्षा का अपना नया उदाहरण बना सकते हैं।

यहाँ मेरी त्वरित app.xaml.cs कार्यान्वयन दिखता है जैसे:

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     new MyClassIWantToInstantiate(); 
    } 
    } 
} 

अद्यतन

मैं हाल ही में एक बग के लिए this workaround की खोज की है, तो आप अनुप्रयोग स्टार्टअप और अचानक कोई भी अनुकूलित करने के लिए इस विधि का उपयोग आवेदन-स्तर संसाधनों का पाया जा सकता है।

+0

हाँ, धन्यवाद, यह काम करता है। – Boris

+0

क्या आप विस्तार कर सकते हैं कि MyClassIWantToInstantiate() क्या होना चाहिए? मैंने मेनविंडो की कोशिश की जो मेरे डब्ल्यूपीएफ ऐप की मुख्य विंडो का वर्ग है और इसके बाद कुछ भी नहीं होता है ... यह लोड किया गया इवेंट कोड निष्पादित नहीं हो रहा है। –

+0

कक्षा वास्तव में आपकी आवश्यकताओं की आवश्यकता हो सकती है। विधवा को प्रदर्शित करने के लिए, आपको इसे तुरंत चालू करना होगा, फिर इसे प्रदर्शित करने के लिए 'दिखाएँ()' पर कॉल करें। –

2

स्टार्टअप ईवेंट (कक्षा अनुप्रयोग) - MSDN का उपयोग करने का प्रयास करें।

आप इस ईवेंट हैंडलर में मेनविंडो दिखा सकते हैं - डिस्पैचर उदाहरण बनाने के बाद।