2012-06-19 29 views
5

मैं MVVM जानने की कोशिश कर रही है, लेकिन वहाँ कुछ मैं अभी तक समझ में नहीं आता है।MVVM - बाहर निकलें पुष्टि

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    if (MessageBox.Show("Are you sure you want to close this application?", "Close??", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) 
    { 
     e.Cancel = true; 
    } 
} 

बहुत आसान:

वर्तमान में, मैं इस ईवेंट हैंडलर की है। हालांकि, मैं इस एप्लिकेशन में एमवीवीएम पैटर्न लागू करना चाहता हूं।

मुझे आश्चर्य है, क्या मुझे यह तर्क सीधे दृश्य कोड के बजाय व्यूमोडेल में रखना है? यदि हां, तो मुझे ऐसा कैसे करना चाहिए?

धन्यवाद

+1

dup? http://stackoverflow.com/questions/4851383/wpf-mvvm-cancel-window-closing – kenny

+0

एमवीवीएम लाइट टूलकिट आपके एमवीवीएम ऐप – HichemSeeSharp

+0

में मैसेजिंग को लागू करने का एक अच्छा और प्रभावी तरीका प्रदान करता है यहां एमवीवीएम लाइट टूलकिट का उपयोग करके एक अच्छा उदाहरण है http: //stackoverflow.com/questions/3683450/handling-the-window-closing-event-with-wpf-mvvm-light-toolkit – HichemSeeSharp

उत्तर

0

आप अपनी खुद की ViewsService जो ViewModel में इस्तेमाल किया जा सकता का उपयोग करें और देखें के साथ बातचीत कर सकते हैं। उदाहरण आप विधि ViewsService.CloseActiveWindow लिख सकते हैं के लिए()। इस मामले में आपको व्यूमोडेल से सीधे सेवा के माध्यम से देखने के लिए बातचीत करने की आवश्यकता नहीं है।

एक और तरीका है: वैश्विक का उपयोग करते हुए प्रकाशित/सेवा सदस्यता लें। ViewModel ईवेंट भेज देगा और दृश्य इस घटना पर सदस्यता लेंगे। कई खिड़कियों के मामले में आप विंडो सक्रिय कर सकते हैं और केवल सक्रिय विंडो बंद कर सकते हैं।

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