我有一個應用程序,我寫的是顯示應用程序的狀態到用戶信息的側欄。在某些情況下,用戶可以將鼠標懸停在邊欄中的各種元素上以查看更多具體的細節。這些細節通過使用模仿Bootstrap's Popover
control行爲的控件向用戶顯示。我使用跨越整個窗口的不可見Canvas
覆蓋層來實現此目的,並且使用計算的Canvas.Left
和Canvas.Top
屬性將「Popover」本身相對放置在此Canvas
上。用戶控件包含窗體完全覆蓋
這裏是一個(非常簡化的)看我的應用程序的當前XAML:
<Window>
<Grid x:Name="container">
<.. a lot of various nested elements ..>
<StackPanel x:Name="sidepanel">
.. content of the sidepanel control ..
</StackPanel>
</.. a lot of various nested elements ..>
<Canvas x:Name="overlay">
.. content of the Popover control ..
</Canvas>
</Grid>
</Window>
這個偉大的工程,但我想重構這個功能集成到一個單一的控制。但是,我不知道如何繼續 - 如果自定義UserControl
在其XAML定義中包含Canvas
疊加層,我將無法以與當前定位在應用程序中相同的方式定位控件的側面板部分。然而,Canvas
覆蓋不能嵌套側面板內,因爲它需要跨越整個窗口才能正常運行。
有沒有辦法定義一個UserControl
可以坐在邏輯樹的不同部分?還是有更好的方法來實現這種效果?
出於興趣,是否有一個原因,你不能使用現有的[彈出](http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx)控制? –
@Benjamin我是相當新的WPF,並沒有瞭解'Popup'控制,當我在幾個星期前實現了這個酥料餅的效果。如果我最終重寫它,我肯定會使用'Popup' ...這樣做會更容易,我可以完全避免這個問題。 –