使WPF窗口的一部分单击,而不是其控件

使WPF窗口的一部分单击,而不是其控件,wpf,user-interface,background,transparent,click-through,Wpf,User Interface,Background,Transparent,Click Through,为了实现dropshadow效果,我的窗口略大于其主要内容,周围有一个透明的“边框”。我很好奇,是否有可能使这个不可见的边框(图像中的彩色部分)只点击通过,并防止主要内容被点击通过 此线程说明如何使整个窗口单击通过: 有什么方法可以使这种方法适应我想要实现的目标吗?只有背景完全透明的窗口才是真正的点击窗口。例如,对于半透明窗口,您可以在单击阴影时自己最小化窗口,例如: private void Grid_MouseLeftButtonDown(object sender, MouseButt

为了实现dropshadow效果,我的窗口略大于其主要内容,周围有一个透明的“边框”。我很好奇,是否有可能使这个不可见的边框(图像中的彩色部分)只点击通过,并防止主要内容被点击通过

此线程说明如何使整个窗口单击通过:


有什么方法可以使这种方法适应我想要实现的目标吗?

只有背景完全透明的窗口才是真正的点击窗口。例如,对于半透明窗口,您可以在单击阴影时自己最小化窗口,例如:

private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (e.OriginalSource == outer)
        WindowState = WindowState.Minimized;
}
XAML:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300"
        AllowsTransparency="True" WindowStyle="None">
    <Window.Background>
        <SolidColorBrush Color="Red" Opacity="0.3" />
    </Window.Background>
    <Grid x:Name="outer" Background="Transparent" MouseLeftButtonDown="Grid_MouseLeftButtonDown">
        <Grid Background="Silver" Margin="10">
            <TextBlock>GUI</TextBlock>
        </Grid>
    </Grid>
</Window> 

我也考虑过这个解决方案,但如果窗口只显示在桌面上,它也会最小化,尽管通常不会。有没有办法确定下面显示的窗口,并将其聚焦而不是最小化?