您不能简单地对Pane
' 的直接子级应用阴影,因为它看起来会被切断。您当然可以尝试覆盖SplitView
'样式并将阴影直接应用到Pane
元素上,但您很快就会发现PaneRoot
它在 XAML 中定义了自己的Clipping逻辑,因此如果您不小心,您可能会破坏其底层 UI逻辑。
这是一个简单的解决方案,无需修改样式即可工作。这个想法是将阴影应用到内部元素上,该元素与Pane
' 的根元素之间有足够的空间使阴影散开。
假设PanePlacement
设置为Right
,那么您的根元素 a Border
(ie RootBorder
) 应该有一个与 的(ie )匹配的左填充 (ie ) 。12,0,0,0
BlurRadius
12
DropShadowPanel
另外,PaneBackground
需要透明,否则会掩盖阴影。相反,背景颜色应该被应用到PaneContentGrid
根元素内的容器元素(即)。
请参阅下面的代码以获取一个简单的示例 -
XAML
<SplitView PanePlacement="Right" PaneBackground="Transparent">
<SplitView.Pane>
<Border x:Name="RootBorder" Padding="12,0,0,0">
<Grid>
<controls:DropShadowPanel BlurRadius="12"
Color="Black"
Opacity="0.3"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Rectangle Fill="White" />
</controls:DropShadowPanel>
<!-- SystemControlPageBackgroundChromeLowBrush is the default PaneBackground brush, feel free to change it to whatever you like! -->
<Grid x:Name="PaneContentGrid" Background="{ThemeResource SystemControlPageBackgroundChromeLowBrush}">
<!-- place your Panel content here. -->
</Grid>
</Grid>
</Border>
</SplitView.Pane>
</SplitView>
演示