4

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>
4

3 に答える 3

0

ResizeMode を CanResize に変更し、ResizeBorderThickness を 0 に設定すると、枠のないウィンドウが表示されます。このウィンドウはサイズ変更できず、ドロップ シャドウをクリックすると、その背後にあるウィンドウがアクティブになります。

于 2011-05-26T09:14:04.443 に答える