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>