您的位置:首页 > 其它

[WPF] 如何为无边框窗口设置阴影效果

2018-02-02 20:34 495 查看
需要将窗口样式添加到 App.xaml 中

[html] view
plain copy

<Style x:Key="for_noresize_window" TargetType="{x:Type Window}">  

    <Setter Property="AllowsTransparency" Value="true"/>  

    <Setter Property="Background" Value="Transparent"/>  

    <Setter Property="FontFamily" Value="Consolas, Microsoft YaHei"/>  

    <Setter Property="FontSize" Value="24"/>  

    <Setter Property="ResizeMode" Value="NoResize"/>  

    <Setter Property="WindowStyle" Value="None"/>  

    <Setter Property="Template">  

        <Setter.Value>  

            <ControlTemplate TargetType="{x:Type Window}">  

                <Grid Margin="10">  

                    <Rectangle Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"  

                               RadiusX="5" RadiusY="5">  

                        <Rectangle.Effect>  

                            <DropShadowEffect BlurRadius="10" ShadowDepth="0"/>  

                        </Rectangle.Effect>  

                    </Rectangle>  

                    <Border Background="{TemplateBinding Background}"  

                            BorderBrush="{TemplateBinding BorderBrush}"  

                            BorderThickness="{TemplateBinding BorderThickness}"  

                            Padding="{TemplateBinding Margin}"  

                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"  

                            CornerRadius="5">  

                        <ContentPresenter />  

                    </Border>  

                </Grid>  

            </ControlTemplate>  

        </Setter.Value>  

    </Setter>  

</Style>  

[html] view
plain copy

<Window x:Class="TestProject.Windows.NoResizeWithShadowEffect"  

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  

        Background="Transparent" Height="500" Width="500"  

        Title="NoResizeWithShadowEffect"  

        WindowStartupLocation="CenterScreen"  

        Style="{StaticResource for_noresize_window}">  

    <Grid>  

        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">  

            <Label Content="NoResizeWithShadowEffect" Foreground="Olive"/>  

            <TextBlock Text=""/>  

            <Button Padding="20,5" Content="Close Window" Click="Clicked"/>  

            <x:Code>  

                <![CDATA[ 

                void Clicked(object sender, RoutedEventArgs e) 

                { 

                    this.Close(); 

                } 

                ]]>  

            </x:Code>  

        </StackPanel>  

    </Grid>  

</Window>  

转载地址:http://blog.csdn.net/qqamoon/article/details/6912513
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: