我正在使用WindowStyle = None和ResizeMode = NoResize在WPF窗口上使用投影 . 在窗口内容上使用DropShadow效果有什么好的选择吗?我在Shell Integration Library中尝试过WindowChrome,但是当ResizeMode = NoResize时它没有显示任何“Chrome” .
如果有可能以某种方式在我的窗口边界之外绘制一个wpf-drop-shadow,那么它可能是一个解决方案 . 如果我在窗口内绘制阴影,我会得到一个不同的行为,然后标准,例如将鼠标光标移动到阴影上 . 在执行此操作时,我的窗口中应该没有命中测试,单击此区域应激活后面的窗口等 .
Zune似乎正在绘制自己的阴影,因为它看起来不像标准的Chrome阴影 . 但它的表现就像一个正常的投影,就像它不捕获鼠标事件一样 . 我不知道他们是怎么做到的 .
Spotify还有另一种阴影,也没有捕获鼠标事件 .
我想这些应用程序完全可以绘制自己的WindowChrome,但是如何? WPF是否支持这种方式?
<Window x:Class="ShellIntegrationTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Microsoft.Windows.Shell"
Title="MainWindow" Height="512" Width="384" WindowStyle="None" ResizeMode="NoResize">
<shell:WindowChrome.WindowChrome>
<shell:WindowChrome ResizeBorderThickness="5" GlassFrameThickness="-1" CornerRadius="0" CaptionHeight="25" />
</shell:WindowChrome.WindowChrome>
</Window>
3 回答
我看到了这一点,因为我试图完成同样的事情 . 看看我提出的解决方案
Maximum custom window loses drop shadow effect
使用我的解决方案,您仍然可以调整表单大小
如果窗口设置为不调整大小并且样式为none,则此代码将在无边框窗口上工作以显示阴影 .
如果将ResizeMode更改为CanResize并将ResizeBorderThickness设置为0,您将获得一个无边框窗口,无法调整大小并且可以单击投影,以便激活它后面的窗口 .