2010-10-07 10 views
7

के लिए एक अच्छा WPF समाधान खोजना चाहता हूं, मैं कुछ अलग करना चाहता हूं, और अपने वर्तमान WPF GUI के शीर्ष पर ओवरले प्रदर्शित करने का प्रयास कर रहा हूं जो उपयोगकर्ता को अभी भी जीयूआई के साथ बातचीत करने की अनुमति देता है, लेकिन उन्हें कुछ पता चलने के लिए परेशानियों की एक परत प्रदान करता है।एक पारदर्शी, क्लिक-थ्रू ओवरले

मेरा प्रश्न वास्तव में दो अलग-अलग सवाल है:

1. आप ओवरले कैसे करना होगा?

मेरा पहला प्रयास आयत का उपयोग करना था, भरने के लिए उचित रंग सेट करना था, और फिर अस्पष्टता को बदलना था। लेकिन यह क्लिक-थ्रू के लिए पारदर्शी नहीं है। तो मुझे लगता है कि खोज परिणामों के मुताबिक, मैं क्या करना चाहता हूं, एक अलग विंडो बनाना है, अपनी पृष्ठभूमि को पारदर्शी पर सेट करना है, और उसके बाद AllowTransparency को True पर सेट करना है। हालांकि यह काम करता है, अगर मैं Background="DarkRed" Opacity="0.2" जैसे कुछ करना चाहता हूं, तो पर क्लिक-थ्रू काम नहीं करते हैं।

और यह मुझे दूसरे भाग की ओर जाता है:

2. अगर मैं MVVM उपयोग कर रहा हूँ इस ओवरले क्षेत्र का आकार बदलें सही तरीका क्या है?

मेरी मुख्य विंडो व्यूमोडेल बनाती है, जो मॉडल बनाती है। मॉडल एकमात्र चीज है जो ओवरले को प्रदर्शित किया जाना चाहिए या नहीं, इस बारे में जानता है। लेकिन मुख्य खिड़की स्पष्ट रूप से एकमात्र चीज है जो इसके आकार को जानता है, और मॉडल इसके ऊपर कुछ भी नहीं जानता है। व्यूमोडेल में ओवरले विंडो के आकार को ओवरलैड करने के लिए इसे हासिल करने का एकमात्र तरीका है, और उसके बाद व्यूमोडेल इन मानों को सेट करता है जब भी मुख्य विंडो का आकार बदलता है?

किसी के पास इस बात की सुराग है कि मैं इन सभी चीजों को कैसे प्राप्त कर सकता हूं?

उत्तर

14

भाग 1 को संबोधित करने के लिए: अपने ओवरले पर IsHitTestVisible="False" सेट करें, चाहे वह एक आयताकार, सीमा या कुछ अन्य तत्व हो। इससे आप अंतर्निहित नियंत्रणों के साथ बातचीत को प्रभावित किए बिना जो भी रंग और पारदर्शिता स्तर चाहते हैं उसे बनाने की अनुमति देंगे।

भाग 2: आपको एक अलग विंडो का उपयोग नहीं करना चाहिए। यदि आप मुख्य विंडो में ओवरले रखते हैं तो आप ओवरले के आकार को स्वचालित रूप से प्रबंधित करने के लिए अपने दृश्य में लेआउट पर भरोसा कर सकते हैं।

+0

हाँ, मुझे आयताकार दृष्टिकोण बेहतर पसंद आया, लेकिन इसे समझ नहीं पाया। हिटटेस्ट गड़बड़ करने के लिए सही चीज की तरह प्रतीत नहीं होता था, लेकिन मैं इसे अभी आज़मा दूंगा! धन्यवाद। – Dave

+0

पूरी तरह से काम करता है। विंडो दृष्टिकोण से बेहतर तरीका है। धन्यवाद! मैं IsHitTestVisible प्यार कर रहा हूँ। :) – Dave

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