在主窗口范围之外/之上显示WPF内容

8
我试图实现一个覆盖主窗口边界的控件效果。很难用语言解释清楚,这也可能是我找不到如何做到这一点或是否有可能的原因之一。
下面是我想要达到的效果示例(来自设计师),其中“note”对象浮动在主窗口的边界外。
但是,在运行时我得到的效果是内部控件被主窗口的边界裁剪了。
请问是否有可能实现这个效果,如果可以,请给出建议。

2
你考虑过使用“弹出窗口(Popup)”吗? - Fredrik Hedblad
谢谢,我认为弹出控件是正确的选择。 - Dale
4个回答

9

有一个控件可以实现这种行为,你可以尝试使用弹出窗口控件。 查看这里

下面是一个例子:

<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进行类似的功能。您可以尝试一下...


1

我认为没有办法在窗口范围之外绘制。但是,您可以为注释控件创建一个新窗口,并将其与主窗口对齐。


另一个答案似乎否定了这个。 - ANeves
弹出控件实际上在内部创建了一个新窗口,正如我在答案中所建议的那样。 - Michael
没错。也许你可以简要解释一下,使用弹出窗口同样会创建一个新窗口。 - ANeves

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接