我正在编写的应用程序中有一个侧边栏,它向用户显示有关应用程序状态的信息。在某些情况下,用户可以将鼠标悬停在侧边栏中的各种元素上以查看更具体的详细信息。这些细节使用模仿BootstrapPopover
控件行为的控件显示给用户。我使用跨越整个窗口的不可见覆盖来完成此操作,并且“弹出框”本身使用计算和属性Canvas
相对放置在此之上。Canvas
Canvas.Left
Canvas.Top
这是我的应用程序当前 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>
这很好用,除了我想将此功能重构为单个控件。但是,我不确定如何继续 - 如果自定义在其 XAML 定义中UserControl
包含Canvas
覆盖,我将无法以与当前在应用程序中定位相同的方式定位控件的侧面板部分。但是,Canvas
覆盖不能嵌套在侧面板内,因为它需要跨越整个窗口才能正常运行。
有没有办法定义一个UserControl
可以位于逻辑树不同部分的单个?或者有没有更好的方法来实现这个效果?