【问题标题】:DropShadowEffect WPFDropShadowEffect WPF
【发布时间】:2017-12-06 15:27:33
【问题描述】:

我是 WPF/XAML 编码的新手。我正在尝试向 Rectangle 形状添加阴影效果。矩形的 XAML 是:

代码 1

<Rectangle HorizontalAlignment="Left" Height="552" Margin="2,10,0,0" 
             VerticalAlignment="Top" Width="427" StrokeThickness="4" 
             Fill="#FF484A4D" Grid.Column="1"/>

DropShadowEffect 的代码是:

代码 2

<Rectangle.Effect>
    <DropShadowEffect x:name="Dshadow" BlurRadius="10" ShadowDepth="0" Color="Black"/>
</Rectangle.Effect>

问题是,我无法将这两个代码组合/使用在一起。当我在 CODE 1 之后安排 CODE 2 时,它不起作用。我应该如何修复/安排这些代码?

【问题讨论】:

    标签: wpf xaml dropshadoweffect


    【解决方案1】:

    您应该在第一行关闭您的Rectangle

    <Rectangle HorizontalAlignment="Left" 
               Height="552" 
               Margin="2,10,0,0" 
               VerticalAlignment="Top" 
               Width="427" 
               StrokeThickness="4" 
               Fill="#FF484A4D" 
               Grid.Column="1">
         <Rectangle.Effect>
             <DropShadowEffect BlurRadius="10" 
                               ShadowDepth="0" 
                               Color="Black"/>
         </Rectangle.Effect>    
     </Rectangle>
    

    您需要访问Rectangle 中的Property - 如果您已经关闭了Element,则不能这样做。

    【讨论】:

    • 属性“name”在 www.schemas.microsoft.com/winfx/xaml 命名空间中不存在 - 这就是我得到的
    • 从该效果中删除 x:name
    【解决方案2】:

    Rectangle.Effect 必须在 Rectangle 组件标签内声明。

    <Rectangle>
     <Rectangle.Effect>
         <DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="Black"/>
     </Rectangle.Effect>    
    

    或者,您可以在 XAML 中声明一个 Style 标记,该标记可以一次又一次地用于组件。下面是一个样式表示例,它将自动将效果添加到 XAML 中的所有矩形。

    <Window.Resources>
     <Style TargetType="{x:Type Rectangle}">         
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect x:Name="shadowEffectButton" Color="Black" ShadowDepth="0" BlurRadius="5"/>
                </Setter.Value>
            </Setter>
    
                <Trigger Property="IsMouseOver" Value="True">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Effect.ShadowDepth" From="0" To="3" Duration="0:0:0.5"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
    
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Effect.ShadowDepth" From="3" To="0" Duration="0:0:0.5"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
    
                </Trigger>
            </Style.Triggers>
        </Style></Window.Resources>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多