我有一個彈出窗口,當雙擊列表視圖中的項目時彈出。
它以主窗口爲中心,看起來非常漂亮。
問題是當用戶移動主窗口或選擇另一個程序時,彈出窗口浮在其他東西之上。WPF彈出窗口替代
我想要一個類似彈出窗口的東西,這意味着它漂浮在窗口中的其他元素之上,但在主窗口移動時保持居中,並且不漂浮在其他頂部程式。
我可以做出這樣的彈出式動作,還是有更好的方法來做到這一點?
我有一個彈出窗口,當雙擊列表視圖中的項目時彈出。
它以主窗口爲中心,看起來非常漂亮。
問題是當用戶移動主窗口或選擇另一個程序時,彈出窗口浮在其他東西之上。WPF彈出窗口替代
我想要一個類似彈出窗口的東西,這意味着它漂浮在窗口中的其他元素之上,但在主窗口移動時保持居中,並且不漂浮在其他頂部程式。
我可以做出這樣的彈出式動作,還是有更好的方法來做到這一點?
在這種情況下,您可能比彈出式窗口更適合您的需求Adorner。裝飾者也可以漂浮在窗戶上方。有一些差異,主要是裝飾者必須與UIElement(包括窗口)綁定。
你知道在事實之後是否可以將元素應用於元素嗎?我試圖讓這個程序非常模塊化,所以彈出彈出窗口的列表視圖是自定義用戶控件的一部分,該控件嵌入頁面中,該頁面位於窗口中的導航框架內。我想這樣做是爲了讓我所要做的就是將Adorner代碼放在用戶控件中,並告訴它附加到窗口。我可以將它附加到用戶控件上,但我希望將它集中在窗口中。 – AndyD273
是的,他們可以像彈出窗口一樣快速添加和刪除。例如,我編寫了自己的DataGrid,並使用Adorner作爲單元格的編輯窗口。確保你的窗口有一個AdornerLayer(我建議在你的Xaml中添加一個),並且你可以很容易地將裝飾者置於其中。 –
解釋過程的任何好資源?顯然「AdornerLayer」非常含糊,沒有很多好的例子來說明它的最佳使用方式。大多數例子都是「在文本框的一角放一個點」,並且爲每一個類寫一個類。完成後,我可能會有十幾個「彈出」式控件,大部分都包含一個自定義的用戶控件,如果能夠幫助它,我寧願不必爲每個控件都編寫一個特定的類。彈出窗口非常易於使用,能夠在XAML中進行設計並根據需要進行顯示。這種簡單創作的裝飾者控制將會非常棒。 – AndyD273
我還沒有找到一種方法,使彈出窗口停止這樣做在WPF
作爲替代方案,您可以創建就像一個彈出一個用戶控件。
通常,我在Canvas控件中將應用程序的內容部分與Popup一起託管,並且當IsPopupOpen變爲True時,我將彈出窗口Visibility = Visible。
這可能是要走的路,但我仍然不確定最好的方式來做到這一點。 ListView位於頁面內的CustomUserControl中,位於導航框內,位於窗口內部(不是主窗口,以防更容易) – AndyD273
我可以向頁面添加一個Canvas, m不知道如何冒泡命令從UserControl中打開它 – AndyD273
@ AndyD273我會將彈出窗口添加到頂層控件(在本例中爲Window),並在ViewModel中有一個屬性「IsPopupOpen」。然後,我會設置一個Event偵聽器來偵聽ShowPopupEvent,並在引發該事件時顯示彈出窗口。您也可以將彈出內容作爲ShowPopupEvent參數的一部分傳入。 – Rachel
如果您願意使用第三方/開源(MS-PL)選件,則Extended WPF Toolkit的ChildWindow control爲ChildWindow control。
它在技術上不是一個單獨的窗口,但它似乎是一個單獨的窗口,用戶。
這是在VB.Net 2010年,並不認爲Popup具有.Owner作爲屬性,如果我嘗試設置'Window.GetWindow(Me).Owner = Application.Current.MainWindow'我得到一個錯誤,說'無法將所有者屬性設置爲自己。因此,我不確定如何正確執行此操作。 – AndyD273
由於這是「wpf彈出窗口超越其他應用程序」的Google熱門遊戲。如果你想使用其他原因的彈出窗口,我只想刪除鏈接到http://stackoverflow.com/questions/16316139/popup-doesnt-lose-focus-and-close-until-ive-clicked-a -control-in-it – Morten
真棒,感謝您的提示 – AndyD273