2012-11-13 274 views
9

我是WPF技術的新手。我在WPF中有以下窗口聲明:WPF窗口陰影效果

<Window x:Class="CustomWindows.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="480" Width="640" ScrollViewer.VerticalScrollBarVisibility="Disabled" WindowStyle="None" AllowsTransparency="True"> 
    <Window.Effect> 
     <DropShadowEffect BlurRadius="15" Direction="-90" RenderingBias="Quality" ShadowDepth="2"/> 
    </Window.Effect> 
    <Grid> 

    </Grid> 
</Window> 

但是當我運行它時,陰影不會出現。我該怎麼做,或者誤會在哪裏?

+0

除了@HighCore的答案,也可能是因爲它是超越繪製區域並將窗口的邊距設置爲與陰影深度的值相同也可以工作。 – Silvermind

+0

@Silvermind,你的方法不起作用。陰影仍然無法顯示... – Victor

+0

這是我的頭頂,值得一試imho :)。無論如何,HighCore的答案就足夠了。 – Silvermind

回答

29

DropShadowEffect不能應用於Window。相反,如果你想覆蓋默認的窗口外觀,您必須將效果應用到窗所包含的一些其他因素:

<Window x:Class="WpfApplication2.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" WindowStyle="None" AllowsTransparency="True" Background="Transparent"> 
    <Grid Margin="20" Background="Red"> 
     <Grid.Effect> 
      <DropShadowEffect BlurRadius="15" Direction="-90" RenderingBias="Quality" ShadowDepth="2"/> 
     </Grid.Effect> 
     ... 

    </Grid> 
</Window> 
+1

非常感謝!非常有用的例子。 –

+0

@HighCore,謝謝你,這是非常有用的,並節省了我的時間:) –

+0

我一直在窗戶上使用DropShadowEffect一段時間。也許這個答案現在已經過時了。 – OfficeAddinDev

-2
<Window 
     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" 
     xmlns:ee="http://schemas.microsoft.com/expression/2010/effects" 
     mc:Ignorable="d" 
     x:Class="Loader.MainWindow" 
     Title="MainWindow" Height="470" Width="770" Deactivated="WorkSpace_Deactivated" Activated="WorkSpace_Activated" 
     x:Name="WorkSpace" WindowStyle="None" AllowsTransparency="True"> 
    <Window.Background> 
     <SolidColorBrush/> 
    </Window.Background> 
    <Window.Effect> 
     <DropShadowEffect/> 
    </Window.Effect> 
    <Grid Background="#2D2D30" Height="450" Width="750"> 
     ... 
    </Grid> 

</Window> 
+5

您應該詳細說明這是如何回答OP問題的。 –