दस्तावेज़ीकरण के लिए, मैं यहां एक उदाहरण जोड़ूंगा कि मैंने कैसे कुछ इसी तरह हासिल किया। मुझे जो पॉपअप चाहिए था, वह पूरे पैरेंट विंडो कंटेंट एरिया (टाइटल बार को छोड़कर) को कवर करता था, लेकिन बस डायलॉग को सेंट करना और उसकी सामग्री को स्ट्रेच करना काम नहीं करता था क्योंकि डायलॉग हमेशा नीचे से थोड़ा ऑफसेट होता था।
उपयोगकर्ता अनुभव के बारे में ध्यान दें: यह अच्छा नहीं है जब सीमाहीन संवाद दिखाई दे रहा है, तब मैं मूल विंडो को खींच / बंद नहीं कर सकता, इसलिए मैं इसका उपयोग करके पुनर्विचार करूंगा। मैंने भी इस उत्तर को पोस्ट करने के बाद ऐसा नहीं करने का फैसला किया, लेकिन दूसरों को देखने के लिए इसे छोड़ देगा।
कुछ googling और परीक्षण के बाद, मैं आखिरकार इसे इस तरह से करने में कामयाब रहा:
var dialog = new DialogWindow
{
Owner = this
};
dialog.WindowStartupLocation = WindowStartupLocation.Manual;
dialog.WindowStyle = WindowStyle.None;
dialog.ShowInTaskbar = false;
dialog.ResizeMode = ResizeMode.NoResize;
dialog.AllowsTransparency = true;
var ownerContent = (FrameworkElement) Content;
dialog.MaxWidth = ownerContent.ActualWidth;
dialog.Width = ownerContent.ActualWidth;
dialog.MaxHeight = ownerContent.ActualHeight;
dialog.Height = ownerContent.ActualHeight;
var contentPoints = ownerContent.PointToScreen(new Point(0, 0));
dialog.Left = contentPoints.X;
dialog.Top = contentPoints.Y;
dialog.ShowDialog();
DialogWindow
एक खिड़की है और अपने मालिक मुख्य आवेदन खिड़की को तैयार है। WindowStartupLocation
करने के लिए सेट किया जाना चाहिए Manual
काम करने के लिए मैन्युअल स्थिति निर्धारण के लिए।
परिणाम:
मुझे नहीं पता कि ऐसा करने का एक आसान तरीका है, लेकिन मेरे लिए काम करने के लिए कुछ और नहीं लगता था।