2011-06-03 27 views
11

मेरे डब्ल्यूपीएफ एप्लिकेशन में मेरे पास बहुत से कस्टम डायलॉग बॉक्स हैं जो खुले पॉप होते हैं ताकि उपयोगकर्ता के साथ विभिन्न चीजें कर सके। यह सुनिश्चित करने के लिए कि संवाद उस विंडो के शीर्ष पर रहता है जिसे इसे कहा जाता है, मैं Topmost="True" को Window संवाद के XAML फ़ाइल के टैग में जोड़ता हूं। यह काम करता है, लेकिन संवाद से अधिक विंडो खुले-यहां तक ​​कि अन्य अनुप्रयोगों पर भी दिखाया गया है। यह वास्तव में कष्टप्रद है। तो क्या संवाद हमेशा अपने माता-पिता के शीर्ष पर रहने के लिए मजबूर होना है, लेकिन अन्य अनुप्रयोगों के शीर्ष पर जरूरी नहीं है?विंडो के शीर्ष पर संवाद रखना, लेकिन सब कुछ के शीर्ष पर नहीं

यहाँ संवाद मेरे पास है (सभी xmlns सामान को छोड़ते हुए) की Window टैग का एक सरलीकृत संस्करण है:

<Window 
mc:Ignorable="d" 
ShowInTaskbar="False" 
Topmost="True" 
WindowStartupLocation="CenterOwner" 
ResizeMode="NoResize" 
SizeToContent="WidthAndHeight" 
WindowStyle="ToolWindow"> 

उत्तर

22

आप Dialog/Window की Owner निर्धारित करने की आवश्यकता है और यह तो पर होगा केवल उस खिड़की के ऊपर।

उदाहरण के लिए:

var loginForm = new LoginForm(); 
loginForm.Owner = Application.Current.MainWindow; 
var success = loginForm.ShowDialog(); 

खिड़की पर TopMost गुण सेट अन्यथा यह हर विंडो के शीर्ष पर होगा न करें।

+0

हुरेय! अपेक्षित् व्यवहार! धन्यवाद! –

+0

एप्लिकेशन में "वर्तमान" नामक परिभाषा नहीं प्रतीत होती है। –

+0

यहां तक ​​कि अगर मैं सिर्फ x.Owner = इसका उपयोग करता हूं; यह काम नहीं करता है। शोडिअलॉग हमेशा एक बार शुरू होने पर स्क्रीन पर एप्लिकेशन विंडो पर बातचीत के दौरान संवाद डालता है, खिड़की के स्थानांतरित होने के बाद नहीं। –

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