Эффект тени окна WPF имеет квадратные углы

Я пытался заставить этот эффект тени работать, но я не знаю, что не так.

Я пытался придать одинаковый эффект Grid и Border, но все они дают одинаковый эффект.

Пример

<Window x:Class="New_EZexeat.ReturnMessageDialogueBox"
        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:local="clr-namespace:New_EZexeat"
        mc:Ignorable="d"
        WindowStyle="None" WindowStartupLocation="CenterScreen" AllowsTransparency="True" Background="Transparent"
        Title="ReturnMessageDialogueBox" Height="150" Width="300">
    <Window.Effect>
        <DropShadowEffect Direction="-75" ShadowDepth="2" Opacity="0.8" BlurRadius="25" Color="Black"/>
    </Window.Effect>


    <Grid Background="Transparent">
        <Border Background="White" CornerRadius="20">
            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                <TextBlock x:Name="itstext"
                           FontSize="15"
                           FontWeight="SemiBold"
                           Margin="0 0 0 10"
                           TextAlignment="Center"><Run Text="Username or Password is incorrect."/><LineBreak/><Run Text=" Please try again"/></TextBlock>

                <Button Content="OK"
                        Style="{StaticResource OrangeButtonTemplate}"
                        FontWeight="SemiBold"
                        FontSize="20"
                        Background="#FFFFD411" 
                        Margin="20 0 20 0"
                        IsCancel="True"
                        FocusVisualStyle="{x:Null}"
                        BorderBrush="{x:Null}" 
                        Height="45"/>
            </StackPanel>
        </Border>

    </Grid>
</Window>

person Jojo Amankwa    schedule 28.03.2019    source источник
comment
Поместите тень на границу с угловым радиусом вместо окна (окно квадратное)   -  person Dave M    schedule 29.03.2019


Ответы (1)


Чтобы эффект тени работал, его нельзя применить к окну, его необходимо применить к сетке или границе. В приведенном ниже примере он добавляется к новой границе внутри указанной.

введите здесь описание изображения

<Border BorderBrush="Transparent" BorderThickness="20" CornerRadius="5"  Background="Transparent">
    <Border BorderBrush="Black" BorderThickness="1" CornerRadius="5" Background="#3BB2EA">
        <Border.Effect>
            <DropShadowEffect Direction="-75" ShadowDepth="2" Opacity="0.8" BlurRadius="25" Color="Black"/>
        </Border.Effect>
        <Border BorderBrush="#55FFFFFF" BorderThickness="1" CornerRadius="5">
            <DockPanel Background="white">
                <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                    <TextBlock x:Name="itstext"
                               FontSize="15"
                               FontWeight="SemiBold"
                               Margin="0 0 0 10"
                               TextAlignment="Center"><Run Text="Username or Password is incorrect."/><LineBreak/><Run Text=" Please try again"/></TextBlock>

                    <Button Content="OK"
                            Style="{StaticResource OrangeButtonTemplate}"
                            FontWeight="SemiBold"
                            FontSize="20"
                            Background="#FFFFD411" 
                            Margin="20 0 20 0"
                            IsCancel="True"
                            FocusVisualStyle="{x:Null}"
                            BorderBrush="{x:Null}" 
                            Height="45"/>
                </StackPanel>
            </DockPanel>
        </Border>
    </Border>
</Border>
person Stuart Smith    schedule 29.03.2019