C# 重叠阴影效果
我知道我想做的可能很简单,很明显,但我无法解决它。我有一个有两行的网格,顶行有一个填充该行的边框元素(固定高度为30)。第二行(固定高度100)当前包含一个白色背景的空DockPanel(这将包含动态控件的ContentControl) 我在第一行的边框上添加了一个阴影效果,方向为270,将阴影投影到边框下方。它几乎看不见,这并不奇怪,因为没有足够的空间容纳阴影。我想要的是阴影从行溢出,并与下一行的DockPanel重叠 我通过使用白色背景的包含网格,然后在边框元素中添加一个底部边距来容纳阴影,实现了这一点。虽然这看起来不错,但这并不是我真正想要实现的 抱歉没有代码示例,我不得不离开工作,但这仍然困扰着我 提前谢谢C# 重叠阴影效果,c#,.net,wpf,C#,.net,Wpf,我知道我想做的可能很简单,很明显,但我无法解决它。我有一个有两行的网格,顶行有一个填充该行的边框元素(固定高度为30)。第二行(固定高度100)当前包含一个白色背景的空DockPanel(这将包含动态控件的ContentControl) 我在第一行的边框上添加了一个阴影效果,方向为270,将阴影投影到边框下方。它几乎看不见,这并不奇怪,因为没有足够的空间容纳阴影。我想要的是阴影从行溢出,并与下一行的DockPanel重叠 我通过使用白色背景的包含网格,然后在边框元素中添加一个底部边距来容纳阴影,
Paul将DockPanel放在边界之前,以便边界在z顺序中更高 这很有效
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="1" Background="White" />
<Border Background="PaleGreen" BorderBrush="DarkGreen" BorderThickness="5">
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
</Grid>
但在这里,停靠面板重叠并遮挡了下降阴影
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="PaleGreen" BorderBrush="DarkGreen" BorderThickness="5">
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
<DockPanel Grid.Row="1" Background="White" />
</Grid>
因为网格是一个面板,所以它继承了Panel.ZIndex attached属性。可以使用此属性按字面设置Z索引,而不是像Phil在他的示例中那样从XAML顺序推断Z索引 非工作示例可以使用一对附加属性进行修复:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="PaleGreen" BorderBrush="DarkGreen" BorderThickness="5" Panel.ZIndex="2">
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
<DockPanel Grid.Row="1" Background="White" Panel.ZIndex="1"/>
</Grid>
这两种方法都有相同的作用,但Panel.ZIndex有助于格式化关注点,或以编程方式更改Z索引。+1这很有效,非常简单明了的解决方案谢谢。尽管它基本上和伊恩斯科尔的答案是一样的,但我觉得我更喜欢他的答案,因为这意味着我的标记是按照它的自然顺序定义的。如果我能接受这两个答案,我会的。非常感谢你的帮助。谢谢你简单而有效的回答!我知道这很简单,没想到会这么简单:0)。