2012-11-19 18 views
5

पर क्लिक करता है मेरा ChildWindow में बंदबटन और हैंडलर Click ईवेंट को असाइन किया गया है। कोड (केवल उदाहरण के लिए):चाइल्डविंडो बंद करें बटन इवेंट हैंडलर कई बार निष्पादित करता है अगर यह कई बार

<Button x:Name="CloseButton" Click="OnCloseButtonClick" /> 

निजी काउंटर (निदान समस्या के लिए):

private uint _i; 

बंद ईवेंट हैंडलर:

बंद करें बटन घोषणा

OnCloseButtonClick(object sender, RoutedEventArgs e) 
{ 
    DialogResult = true; 
    System.Diagnostics.Debug(_i++); 
} 

तेजी के बाद प्रोग्राम पर क्लिक करने से "1", "2", "3" आउटपुट हो सकता है, और इसी तरह ... जैसा कि मैं सेटी के बाद जानता हूं एनजी DialogResult = true (या false), चाइल्डविंडो बंद होना चाहिए और बंदबटन की Click घटना को दूसरी बार बढ़ाने का कोई तरीका नहीं होना चाहिए।

क्या कोई समस्या का कारण जानने में मदद कर सकता है और बिना बूल झंडे (निष्पादित/निष्पादित) के इसे हल करने में मदद कर सकता है?

+1

मैं इसे पहली पंक्ति '((बटन) प्रेषक जोड़ता हूं) .इस सक्षम = झूठा' समाधान नहीं है? –

+0

हां, यह है। लेकिन यह कामकाज की तरह दिखता है। और मैं भी समस्या का कारण जानना चाहता हूं। –

+0

मुझे लगता है कि कोई समस्या नहीं है। एक बटन को कई बार क्लिक किया जा सकता है और बटन को अक्षम करने के लिए आप पर निर्भर किया जा सकता है, जब आप इसे क्लिक करने योग्य नहीं होना चाहते हैं – Jehof

उत्तर

2

मेरी टिप्पणी

समस्या क्योंकि करीब खिड़की बंद एनीमेशन को सक्रिय करता है खिड़की जिसका मतलब है कि बटन घटनाओं उपलब्ध जब तक एनीमेशन खत्म और विंडो बंद हो रहे हैं बंद करने के लिए से कॉपी किया गया, देख During Silverlight ChildWindow closing animation user can click any button

एक त्वरित और गंदे समाधान

((Button)sender).IsEnabled=false; 

की शुरुआत में हैंडलर फ़ंक्शन पर क्लिक करें।

+0

UI दृश्य स्थिति के साथ मिश्रण ईवेंट हैंडलर तर्क मेरे लिए परेशान दिखता है :) लेकिन, जैसा कि मैंने समझा कि अब इसे हल करने का एक अच्छा तरीका है। –

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