在主窗口边界上方/外部显示 wpf 内容 [关闭]

Posted

技术标签:

【中文标题】在主窗口边界上方/外部显示 wpf 内容 [关闭]【英文标题】:Displaying wpf content over/outside main window bounds [closed] 【发布时间】:2012-06-20 03:30:39 【问题描述】:

我正在尝试实现将主窗口边界与控件重叠的效果。很难用语言来解释这一点,这也可能是为什么我很难找到有关如何执行此操作或什至可能的信息的原因。

下面是我试图获得的效果示例(来自设计师),其中“注释”对象漂浮在主窗口的边界之外。

但是我在运行时得到的效果是这样的(下图),内部控件被主窗口的边界剪裁了。

有人可以告诉我这是否可能(或不可能),以及是否有一些关于如何获得这种效果的建议。

【问题讨论】:

您考虑过使用Popup吗? 谢谢,我认为 Popup 控件是要走的路 【参考方案1】:

有一个控件可以实现这种行为你试过Popup控件吗? 检查this out

这是一个例子;e"

<Window x:Class="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>
    <ToggleButton x:Name="MainButton" Content="Show popup" VerticalAlignment="Top" HorizontalAlignment="Right"/>
    <Popup PlacementTarget="Binding ElementName=MainButton" Placement="Bottom" AllowsTransparency="True" IsOpen="Binding ElementName=MainButton, Path=IsChecked">
        <Grid>
            <Border BorderBrush="Orange" BorderThickness="1" Background="Yellow"/>
            <TextBlock Text="Lorem Ipsum is simply dummy text of the printing and typesetting industry"/>
        </Grid>            
    </Popup>
</Grid>

【讨论】:

【参考方案2】:

窗口的内容总是会被剪裁。所以基本上只有一种方法可以去这里。您可以通过为浮动内容创建一个新的透明窗口,然后根据主窗口的位置手动设置和更新浮动内容窗口的位置来获得所需的效果。

到目前为止,我一直在使用 AvalonDock 来实现类似的功能。你可以试试看……

【讨论】:

【参考方案3】:

我认为没有办法在窗口边界之外进行绘制。但是,您可以简单地为便笺控件创建一个新窗口并将其与主窗口对齐。

【讨论】:

另一个答案似乎否定了这个。 弹出控件实际上在内部创建了一个新窗口,正如我在答案中所建议的那样。 确实如此。也许您可以通过简短的解释来扩展您的答案,说明使用弹出窗口同样也会创建一个新窗口。【参考方案4】:

你试过ClipToBounds属性吗?

【讨论】:

以上是关于在主窗口边界上方/外部显示 wpf 内容 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

WPF提示窗口总在主窗体前是怎么实现的

如何使WPF弹出式窗口不被隐藏在主应用程序

C#窗口切换问题:如何切换回主窗体

这样的窗口如何做(WPF项目)

winform中一个窗口关闭后在主窗口上自动刷新显示的数据。谢谢

wpf 中怎么设置一个窗体总在最前显示,非模式对话框怎么只显示一个。