Popup不是其父窗口的正确子项?

时间:2016-05-01 12:14:19

标签: wpf xaml popup

我正在尝试在右上角创建一个带有图标的时尚窗口,该窗口部分位于窗口边界之外。由于这不是直接可能的(落在窗外的内容被剪裁),我正在使用Popup控件。

<Popup Placement="Right" HorizontalOffset="-80" VerticalOffset="-40" IsOpen="True" AllowsTransparency="True"
       PlacementTarget="{Binding RelativeSource={RelativeSource AncestorType=Grid}}">
  <Image Source="pack://application:,,,/graphics/AdminIcon.png" Stretch="None" />
</Popup>

只要我不在窗口之间切换,它就可以正常工作。因此,看起来Popup既不是Window的正确子项,也不是它自己的完全独立的窗口;介于两者之间。

我会尝试用两张图片来解释它:

Image1:窗口已加载,弹出窗口显示在右上角:

Image1: Window loaded

Image2:ALT + TAB:记事本以某种方式在Popup和Window之间注入

Image2: Notepad between popup and window

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用无边框透明窗口代替Popup:

<Window ...
    WindowStyle="None" AllowsTransparency="True" Background="{x:Null}"
    MouseLeftButtonDown="Window_MouseLeftButtonDown">
    <Grid>
        <Grid Margin="0,20,0,0" Background="White">
            ... window content goes here     
        </Grid>
        <Image
            Source="/graphics/AdminIcon.png" Stretch="None"
            HorizontalAlignment="Right" VerticalAlignment="Top" />

    </Grid>
</Window>

使用此MouseLeftButtonDown处理程序

private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    DragMove();
}

也许是某处的关闭按钮。