我有一個場景,我在控件上顯示一個彈出窗口。我能夠做到這一點使用PlacementTarget
,Position
等WPF附加彈出窗口與控件
我的問題是,當我調整窗口大小,並將其移動到桌面上的其他地方,彈出窗口保持不動,意味着它不隨控制集移動爲PlacementTarget
。我可以隱藏它,以防其他窗口變得焦點。但無法將其與我的控制附加。
我該如何解決這個問題? 有沒有其他的這種控制可用?
我有一個場景,我在控件上顯示一個彈出窗口。我能夠做到這一點使用PlacementTarget
,Position
等WPF附加彈出窗口與控件
我的問題是,當我調整窗口大小,並將其移動到桌面上的其他地方,彈出窗口保持不動,意味着它不隨控制集移動爲PlacementTarget
。我可以隱藏它,以防其他窗口變得焦點。但無法將其與我的控制附加。
我該如何解決這個問題? 有沒有其他的這種控制可用?
我不認爲你會得到你想要的行爲,而無需派生Popup並做一些處理。
如果你有PlacementTarget,那麼你可以得到它應該遵循的窗口,對吧?因此,當彈出窗口顯示時,觀看包含PlacementTarget的窗口進行移動,並相應地調整彈出窗口。 Popup派生自Window,所以它應該有一個Left和Top屬性。
如果您查看MS中的所有WPF控件,則當您單擊Control之外的某個位置時,ControlTemplate中的Popup將自動關閉。 (例如,組合框)
這是該物業負責人認爲:StaysOpen="False"
最簡單的黑客是定義一個Window
它會看起來像一個Popup
並結合其位置屬性到您的控制與轉換器增加了一些像素它。
這不是一個完美的解決方案,但是如果您有一個可以使用的事件(在這種情況下爲Resize或LocationChanged),則可以通過更改其偏移量並將其更改回來來讓彈出窗口移動。
像這樣:
popup.HorizontalOffset + = 0.01
popup.HorizontalOffset - = 0.01
約翰克里斯特曼(上面)具有正確的想法。 I posted an answer的問題涉及在上下文中顯示這種方法的類似問題。它處理窗口被移動或調整大小的情況。