2009-11-12 114 views
4

我有一個場景,我在控件上顯示一個彈出窗口。我能夠做到這一點使用PlacementTarget,PositionWPF附加彈出窗口與控件

我的問題是,當我調整窗口大小,並將其移動到桌面上的其他地方,彈出窗口保持不動,意味着它不隨控制集移動爲PlacementTarget。我可以隱藏它,以防其他窗口變得焦點。但無法將其與我的控制附加。

我該如何解決這個問題? 有沒有其他的這種控制可用?

回答

0

我不認爲你會得到你想要的行爲,而無需派生Popup並做一些處理。

如果你有PlacementTarget,那麼你可以得到它應該遵循的窗口,對吧?因此,當彈出窗口顯示時,觀看包含PlacementTarget的窗口進行移動,並相應地調整彈出窗口。 Popup派生自Window,所以它應該有一個Left和Top屬性。

4

如果您查看MS中的所有WPF控件,則當您單擊Control之外的某個位置時,ControlTemplate中的Popup將自動關閉。 (例如,組合框)

這是該物業負責人認爲:StaysOpen="False"

最簡單的黑客是定義一個Window它會看起來像一個Popup並結合其位置屬性到您的控制與轉換器增加了一些像素它。

1

這不是一個完美的解決方案,但是如果您有一個可以使用的事件(在這種情況下爲Resize或LocationChanged),則可以通過更改其偏移量並將其更改回來來讓彈出窗口移動。

像這樣:

popup.Horizo​​ntalOffset + = 0.01

popup.Horizo​​ntalOffset - = 0.01

2

約翰克里斯特曼(上面)具有正確的想法。 I posted an answer的問題涉及在上下文中顯示這種方法的類似問題。它處理窗口被移動或調整大小的情況。