我在使用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>
答案 0 :(得分:3)
答案 1 :(得分:1)
如果窗口设置为不调整大小并且它的样式为无,则此代码将在无边框窗口上显示阴影。
xmlns:local="clr-namespace:BorderTest"
mc:Ignorable="d" WindowStyle="None" ResizeMode="NoResize"
Title="MainWindow" Height="350" Width="525" AllowsTransparency="True" Background="Transparent">
<Border Margin="10" BorderThickness="1" BorderBrush="Blue">
<Border.Effect>
<DropShadowEffect Color="Black"
Direction="270"
BlurRadius="10"
ShadowDepth="3" />
</Border.Effect>
<Grid Background="White">
</Grid>
</Border>
答案 2 :(得分:0)
<Window
.........
.........
.........
Title="Welcome" Loaded="Window_Loaded" Height="400" Width="400" ResizeMode="NoResize" AllowsTransparency="True" WindowStyle="None" ShowInTaskbar="False" WindowStartupLocation="CenterScreen" Background="Transparent" BorderThickness="0">
<Border Margin="10" CornerRadius="100"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="10">
<Border.Effect>
<DropShadowEffect />
</Border.Effect>
<Grid>
...
...//main design inside windows
...
</Grid>
</Border>
答案 3 :(得分:-2)
如果您将ResizeMode更改为CanResize并将ResizeBorderThickness设置为0,您将获得一个无边框窗口,无法调整其大小,并且可以单击该阴影以使其后面的窗口激活。