我的XAML中有一个Popup
来显示一些信息。弹出框后,它没有Border
,并且似乎与页面的Background
融为一体。它只需要一个Border
,理想情况下它背后有一个阴影,以显示某种分层和焦点。
有关如何设置Popup的边框以及可能的阴影效果的想法吗?
答案 0 :(得分:26)
在我看来,更容易在Popup Border周围留下足够大的余量用于DropShadowEffect,即
<Border ... Margin="0 0 8 8">
<Border.Effect>
<DropShadowEffect ... />
</Border.Effect>
<!-- Popup Content Here -->
</Border>
Popup应该允许透明度,即AllowTransparency = True。
答案 1 :(得分:10)
<Popup PopupAttributes="SetByYou">
<Border BorderAttribute="SetByYou">
<!-- Content here -->
</Border>
</Popup>
答案 2 :(得分:4)
谢谢,我最终通过设置边框给出了类似3D(几乎)的外观:
<Border BorderBrush="White" BorderThickness="3,3,0,0">
<Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>
看起来很不错!
答案 3 :(得分:4)
显然,弹出窗口目前不支持投影,see link。
但是,我已经提出了一个解决方法,这个方法相当不错。基本上,我们的想法是将Canvas嵌套在另一个透明Canvas中,然后将阴影应用于嵌套的Canvas。简单。下面是一个例子:
<Grid>
<TextBox x:Name="MyTxtBx" Width="50"
Height="20" Text="Hello"/>
<Popup IsOpen="True" Width="200" Height="100"
PlacementTarget="{Binding ElementName=MyTxtBx}"
AllowsTransparency="True" >
<Canvas Background="Transparent">
<Canvas Background="Green" Width="150" Height="50">
<Canvas.BitmapEffect>
<DropShadowBitmapEffect Softness=".5"
ShadowDepth="5"
Color="Black"/>
</Canvas.BitmapEffect>
<Label Content="THIS IS A POPUP TEST"/>
</Canvas>
</Canvas>
</Popup>
</Grid>
需要注意的是,嵌套画布需要小于其容器的大小。还必须设置AllowTransparency。