2011-01-03 15 views
7

मुझे एक संदेशबॉक्स की आवश्यकता है। शो(), लेकिन एक विस्तारित कार्यक्षमता के साथ: विंडोज फोन 7 के लिए अंतर्निहित संदेशबॉक्स मनमाने ढंग से बटन नहीं दिखाएगा, बस ठीक है या रद्द करें, मुझे उदाहरण की आवश्यकता है हाँ भी नहीं। मुझे एक शो विधि की आवश्यकता है जो केवल तभी वापस आएगा जब उपयोगकर्ता बटन पर क्लिक करता है। मैंने पॉपअप के रूप में अपना खुद का संदेशबॉक्स बनाने की कोशिश की। समस्या यह है कि यह WP7 में यूआई-थ्रेड में सब कुछ के रूप में अतुल्यकालिक है, और मैं यूआई-थ्रेड को अवरुद्ध नहीं कर सकता क्योंकि यूआई-थ्रेड बटन क्लिक ईवेंट को संभालने के लिए ज़िम्मेदार है। मैंने WP7 के लिए एक चाइल्डविंडो उदाहरण देखा, लेकिन यह भी असीमित था, मेरे पास एक शो() विधि होनी चाहिए जो उपयोगकर्ता द्वारा क्लिक किए जाने पर ही लौटाए। कोई सुझाव? कुछ प्रकार के DoEvents() मुझे बहुत मदद कर सकते हैं, लेकिन WP7 में कोई ऐसी विधि नहीं है :(संदेशबॉक्स। विंडोज फोन 7 के लिए दिखाएं

उत्तर

6

आप कस्टम बटन के साथ एक संदेशबॉक्स प्रदर्शित करने के लिए XNA के Guide.BeginShowMessageBox() उपयोग कर सकते हैं। Here's कि यह कैसे उपयोग करने के लिए पर एक ट्यूटोरियल।

ध्यान दें कि MessageBoxIcon पैरामीटर का चयन नहीं करता है WP7 पर एक आइकन, इसके बजाय यह एन का चयन करता है संदेश बॉक्स प्रदर्शित होने पर otification ध्वनि।

संपादित करें: ओह, मैंने पोस्ट करने से पहले आपकी तुल्यकालिक आवश्यकता को नहीं पढ़ा। शायद आप जो कुछ भी चलाना चाहते हैं उसे रोकने के लिए ध्वज सेट कर सकते हैं, और उपयोगकर्ता ने चयन करने के बाद इसे रीसेट कर दिया है।

+0

हां, लेकिन मेरी सबसे बड़ी समस्या यह है कि मुझे एक विधि का उपयोग करना चाहिए जो केवल एक बटन क्लिक होने पर ही लौटाता है। उदाहरण के लिए मैं एक टाइमर का उपयोग कर सकता हूं घटना पर क्लिक करें, और स्थिति को संतुष्ट होने पर टाइमआउट ईवेंट हैंडलर में प्रोग्राम जारी रखें, लेकिन मैं यह समझ नहीं सकता कि इसे एक विधि में कैसे कार्यान्वित किया जाए :( – Vic

+0

मैंने कोशिश की और यह काम करता है !!! :): – Vic

+0

AutoResetEvent waitHandle = new AutoResetEvent (झूठा); गाइड। बेजिनशो मैसेजबॉक्स ("विंडोज़ का संस्करण", "विंडोज़ का संस्करण चुनें।", नई सूची {"Vista", "सात"}, 0, संदेशबॉक्स Icon.Error, asyncResult => { int ? लौटा = गाइड। एंडशोमेसेजबॉक्स (asyncResult); waitHandle.Set(); }, शून्य); waitHandle.WaitOne(); यह यूआई थ्रेड को अवरुद्ध नहीं करता है! Thanx :) – Vic

2

मुझे ऐसा कुछ ढूंढने पर मिला, लेकिन बस निर्मित संदेशबॉक्स का उपयोग करके घायल हो गया। यह निश्चित रूप से आपको देगा कस्टम बटन करने की क्षमता।

Windows Phone 7 Custom Message Box

+0

आपके उत्तर के लिए धन्यवाद, लेकिन शो() भाग इस समाधान में संतुष्ट नहीं है, केवल मनमानी बटन भाग है; अगर मैं इसे संशोधित करता हूं: अधिसूचनाबॉक्स। दिखाएं ("बाहर निकलें", "क्या आप निश्चित हैं?", नया अधिसूचनाबॉक्स कॉमांड ("हां",() => {}), नया अधिसूचनाबॉक्स कॉमांड ("नहीं",() => {})); इस पर: ऑटोरेटेटवेंट प्रतीक्षा करेंंडल = नया ऑटो रीसेट इवेंट (झूठा); अधिसूचनाबॉक्स। शो ("बाहर निकलें", "क्या आप निश्चित हैं?", नया अधिसूचनाबॉक्स कॉमांड ("हां",() => {waitHandle.Set();}), नया अधिसूचनाबॉक्स कॉमांड ("नहीं",() => {waitHandle.Set();})); waitHandle.WaitOne(); ... तो मुझे डेडलॉक मिलता है, यह मेरी समस्या है :( – Vic

1

कैनवास का उपयोग करें जिसमें आपके पास वह सब कुछ है जो आप चाहते हैं। फिर बस इसे पॉप अप करने के लिए दृश्यता गुण का उपयोग करें ..