c# - How to Fire an event when mouse points to the top location of the window? -


नमस्ते मैं एक WPF अनुप्रयोग विकसित कर रहा हूं जहां मुझे डॉकपैनेल खिड़की है, लेकिन यह केवल तभी दिखाएगा जब माउस उस स्थान को इंगित करेगा, (ठीक इसी तरह विंडोज 8.1 शीर्षकबार की तरह, जहां आप शीर्ष पर अपने माउस को इंगित करते हैं, क्रॉस बटन और कम से कम बटन आते हैं), अगर माउस खिड़की की ओर और दूसरे स्थान पर निकलता है बाल तत्व & lt; StackPanel & gt; संपूर्ण विंडो को कवर करेगा और डेटा दिखाएगा, लेकिन जब भी माउस ने यूआई के शीर्ष स्थान को इंगित किया है, मुझे हेडर प्रदर्शित करना चाहिए मैंने अपने विचार से एक छवि संलग्न की है कोई भी कुछ सुझाव दे सकता है?

बहुत सारे Googling के बाद मैंने पाया कि स्क्रीन रिज़ॉल्यूशन प्राप्त करने और खिड़की की ऊंचाई और चौड़ाई से घटाना मुझे इच्छा परिणाम देगा। लेकिन मुझे लगता है कि यह अंतिम समाधान नहीं है, एक अन्य तरीका होना चाहिए। हैडर

सुझाव दिया है कि मैंने इस तरीके से कोशिश की

  & Lt; ग्रिड एक्स: नाम = "gdMainWindow" & gt; & LT; Grid.RowDefinitions & gt; & Lt; रोडिफ़िनिशन ऊँचाई = "20" / & gt; & Lt; रोडिफ़िनिशन ऊँचाई = "*" / & gt; & LT; /Grid.RowDefinitions> & Lt; आयत ग्रिड। पंक्ति = "0" भरें = "पारदर्शी" ऊँचाई = "20" माउसएन्टर = "डॉकमाउस एंटर" माउस लेव = "डीपी_Mouse लेव" / & gt; & Lt; डॉकपैनेल ग्रिड। रो = "0" पृष्ठभूमि = "ब्लैक" & gt; & Lt; छवि स्रोत = "छवियाँ / मोमबत्ती- blownout.jpg" स्ट्रेच = "यूनिफ़ॉर्मफ़ोफल" / & gt; & Lt; / डॉकपैनेल & gt;  

और Dock_MouseEnter

  निजी void Dock_MouseEnter (ऑब्जेक्ट प्रेषक, MouseEventArgs e) {dp.Visibility = Visibility.Visible में ; } निजी शून्य dp_MouseLeave (ऑब्जेक्ट प्रेषक, MouseEventArgs ई) {dp.Visibility = Visibility.Collapsed; }  

लेकिन यह छोड़ता है कि शीर्ष पर 20 पिक्सेल स्थान सफेद के रूप में, छवि पहली पंक्ति में समायोजित नहीं करती है।

आप ऐसा कुछ कर सकते हैं:

  & lt; ग्रिड & gt; & LT; Grid.RowDefinitions & gt; & Lt; रोडिफ़िनिशन ऊँचाई = "20" / & gt; & Lt; रोडिफ़िनिशन ऊँचाई = "*" / & gt; & LT; /Grid.RowDefinitions> & Lt; आयत x: नाम = "टॉपपार्ट" माउसएन्टर = "माउसइन्टरइवेंट" माउस लेवेव = "माउस लेवेवेंट" भरें = "पारदर्शी" ग्रिड। पंक्ति = "0" / & gt; & Lt; StackPanel x: Name = "RestOfContent" Grid.Row = "0" ग्रिड। RowSpan = "2 /" gt; & lt; / ग्रिड & gt;  

यह एक छद्म- XAML है, इसलिए सावधान करें कि कुछ गुणों को थोड़ा अलग नाम दिया जा सकता है।

आप एक ग्रिड बनाते हैं, जिसमें दो पंक्तियाँ हैं, जो आपके रिएक्टिव शीर्ष भाग के लिए इच्छित आयाम का पहला एक है बाकी के साथ दूसरा।

पहले ग्रिड। पंक्ति में आप एक आयत सेट करते हैं, या किसी अन्य पारदर्शी तत्व को आपको पता लगाना होगा कि कब माउस प्रवेश करता है या पत्तियों से जुड़ी घटनाओं को नियंत्रित करता है। आपकी बाकी की सामग्री को वही ग्रिड। राउ में रखा जाएगा, लेकिन इसमें एक रोसपैन होगा जो इसे विस्तारित करने देगा खिड़की के बाकी हिस्सों में।

यदि आपके पास इस दृष्टिकोण से कोई समस्या है, तो आईई आयत कुछ सामग्री को ओवरलैप करता है जो आपको इसके साथ बातचीत करने की अनुमति नहीं देता है, आपको एक घटकों के ZIndex के साथ बहुत कम, यह भी सुनिश्चित करें कि आप इसे अपने विंडो के शीर्ष भाग के रूप में उपयोग कर रहे हैं W ताकि आयत नीचे स्क्रॉल नहीं करेगा।


Comments

Popular posts from this blog

c# - SignalR: "Protocol error: Unknown transport." when navigating to hub -

c# - WPF Expander overlay used in ItemsControl -

class - Kivy: how to instantiate a dynamic classes in python -