दूसरे दिन इस मुद्दे से लड़ रहे हैं।अदृश्य खोला पॉपअप
पुन: पेश करने के लिए, नई WPF आवेदन बनाने के लिए, XAML
<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
<Button Width="100" Height="100" MouseMove="Button_MouseMove"/>
<Popup x:Name="popup" StaysOpen="False" AllowsTransparency="True" Placement="Center">
<TextBlock>Some random text</TextBlock>
</Popup>
<CheckBox IsChecked="{Binding (Popup.IsOpen), ElementName=popup}">Popup</CheckBox>
</StackPanel>
और कोड
private void Button_MouseMove(object sender, MouseEventArgs e)
{
popup.IsOpen = true;
}
माउस ले जाएँ बटन, पॉपअप खोलने बंद करने के लिए कहीं और क्लिक करें। बग के लिए बटन पर क्लिक करें: पॉपअप IsOpen है == सच, (चेक बॉक्स पर या हैंडलर में ब्रेकप्वाइंट साथ देखा जा सकता है), जबकि यह अदृश्य है।
WTF?
और अपने मूल समस्या है, ऐसा लगता है, क्या की स्थापना IsOpen
तत्काल नहीं है। उदाहरण के लिए, जब मैं कोशिश Popup
के MouseMove
घटना में false
करने के लिए इसे स्थापित करने के लिए, तो मैं मिल Button
की MouseEnter
और MouseMove
घटनाओं सही दौरान कि
IsOpen = true;
ही true
करने के लिए इसे स्थापित करने के साथ निकाल दिया, वहाँ 2 हैं (!) MouseMove
घटनाओं होती है, तो देखने के लिए ईवेंट हैंडलर में इस लाइन डाल यह
System.Diagnostics.Trace.WriteLine("M");
होगा वी.एस. की आउटपुट विंडो में 2 एम, जबकि Popup
(जब StayOpen=false
) माउस घटनाओं को कैप्चर करने का मानना है और यह करता है, लेकिन तुरंत नहीं है।
कोई मुझे बता सकते हैं क्या उस पर जा रहे हैं? मेरे पास कोई घटनाओं के लिए होता है दौरान चाहते हैं (या कुछ ही समय बाद? इसकी जांच करने का अगर यह सच है?) IsOpen
की स्थापना। पहले से ही चीजों के दर्जनों की कोशिश की: Dispatcher.InvokeAsync
, चर, टाइमर, आदि
की [WPF पॉपअप ध्यान केंद्रित खो देता है लेकिन खोला रहता है] संभव डुप्लिकेट (http://stackoverflow.com/questions/14404897/WPF-पॉपअप-खो देता है फोकस बल्कि रहता खोला)। वहां जवाब देखें: संभवतः IsOpen के लिए बाध्यकारी StaysOpen प्रॉपर्टी को सही ढंग से कार्य नहीं करने का कारण बनता है ... – qqbenq
@qqbenq, फोकस के साथ कुछ भी नहीं है। यहां बाध्यकारी केवल समस्या का प्रदर्शन करना है (इसे हटाएं और ब्रेकपॉइंट = एक ही समस्या का उपयोग करें)। – Sinatr
'माउस पॉइंटर अपने मूल ऑब्जेक्ट पर चलता है जब एक पॉपअप स्वचालित रूप से नहीं खुलता है। यदि आप पॉपअप को स्वचालित रूप से खोलना चाहते हैं, तो टूलटिप या टूलटिप सेवा वर्ग का उपयोग करें। अधिक जानकारी के लिए टूलटिप Overview.', [यहां] (http://msdn.microsoft.com/en-us/library/ms749018 (v = vs.110) .aspx) – Kcvin