所以,我使用网格和堆栈面板很好地布置了我的所有控件。
在某些情况下,我想显示一个对话框层(添加首选项等)。它不需要是模态的,也不需要具有透明背景..我只需要它很好,不引人注目,并且绝对定位..
我能想到的绝对定位此类对话框控件的唯一方法是使用我没有使用的画布。我需要它显示在定期布置的控件之上..
有哪些选择?
所以,我使用网格和堆栈面板很好地布置了我的所有控件。
在某些情况下,我想显示一个对话框层(添加首选项等)。它不需要是模态的,也不需要具有透明背景..我只需要它很好,不引人注目,并且绝对定位..
我能想到的绝对定位此类对话框控件的唯一方法是使用我没有使用的画布。我需要它显示在定期布置的控件之上..
有哪些选择?
您可以使用弹出控件(设置 PlacementRectangle 值来定位内容)或 Adorner 层来执行此操作。这里描述了装饰器技术:http: //bignickolson.com/2009/10/15/overlaying-controls-in-wpf-with-adorners/
我认为您正在寻找的是将Panel.ZIndex
Dialog 设置为较高的值。然后只需设置可见性以隐藏对话框。http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.zindex.aspx
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock Panel.ZIndex="9999" Background="Green">This TextBlock will always be on top as long as it is visible.</TextBlock>
<TextBlock Background="Red">Test</TextBlock>
</Grid>
</Window>
然后,您可以将其与本示例中的对话框结合使用: WPF C# InputBox
我相信这就是您正在寻找的......您可以将控件放在您的装饰器中,然后通过更改 bool 属性,您可以显示或隐藏它...您可以根据自己的喜好自定义行为