【发布时间】:2018-12-20 12:53:55
【问题描述】:
我发现hereDropShadows 不能溢出带有固定Height 的组件。
我尝试在每个容器中添加 somme ClipToBounds="False",但它似乎不起作用。
如果您使用此代码创建一个新项目,您将看到问题:
<Window .... >
<StackPanel x:Name="Sp2" Margin="20" Height="47" ClipToBounds="False">
<Rectangle Height="40" Fill="Purple" Margin="4" ClipToBounds="False">
<Rectangle.Effect>
<DropShadowEffect Opacity=".4" BlurRadius="13" ShadowDepth="4" Direction="288"/>
</Rectangle.Effect>
</Rectangle>
</StackPanel>
</Window>
这是问题的截图: 左边是我想要的,在固定高度的组件上溢出的阴影,右边是我所拥有的。
当我在一个团队中工作时,我正在为我们的应用程序开发每个 UI 组件,我希望团队中的其他人不必关注这些细节。我们如何避免这种行为,如果我们不能避免这种剪裁效应的指导方针是什么?
【问题讨论】:
-
还是related吗?还是新的问题?在任何情况下,考虑添加一些东西来演示问题:代码、xaml、屏幕截图(它是如何以及你想要什么)。
-
@Sinatr Woops 抱歉,我忘了添加代码部分,我的错,我编辑了帖子
-
使用您的 xaml 时应该注意什么?你能用文字解释什么是错的或(更好地)截图吗?
-
换句话说,如果我删除其中一个父容器(
StackPanel更容易)它可以工作(阴影没有被剪掉)。你必须稍微提高一下minimal reproducible example 的技能,使用<DropShadowEffect ShadowDepth="30" />更容易看到;) -
至于为什么-我猜wpf中效果的性质,着色器最多只能接收父容器,并且只能在其中绘制。请参阅workaround,或者您可以使用“浮动重叠技术”:在更高级别上设置
Rectangle(与StackPanel相同)并在视图中使用绑定来定位矩形,就好像它在里面一样。