假设有一个形状不规则的元素由任意嵌套的其他元素组成:
<Window.Resources>
<RadialGradientBrush x:Key="brush">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="1" />
</RadialGradientBrush>
</Window.Resources>
<StackPanel Name="element">
<StackPanel.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="10" />
</StackPanel.Effect>
<Rectangle Name="child1" Height="100" Margin="10" Stroke="Black" Fill="{StaticResource brush}" />
<Grid>
<Rectangle Name="child2" Height="100" Margin="10" Stroke="Black" Fill="{StaticResource brush}" />
</Grid>
</StackPanel>
所有部分都是交互式的(即一个孩子可以是一个真正的控制)。
如何使用跨越所有孩子的单个径向渐变填充孩子的背景(应该看起来好像它的大小为element
)。
更新: StackPanel 有一个阴影,应该在孩子周围绘制。
一种可能的解决方案是通过适当的转换生成 Radius 和 Origin/Center 绑定到element
's 和child
' 属性的渐变,但这种方法会相当复杂和昂贵。