我在我的XAML中有一个Popup
来显示一些信息。当弹出框时,它没有Border
并且似乎融入页面的Background
。它只需要一个Border
,最好是在它后面的阴影显示某种分层和焦点。WPF弹出窗口:如何在弹出窗口周围添加边框?
任何想法如何设计一个Popup有边界和可能的阴影效果?
我在我的XAML中有一个Popup
来显示一些信息。当弹出框时,它没有Border
并且似乎融入页面的Background
。它只需要一个Border
,最好是在它后面的阴影显示某种分层和焦点。WPF弹出窗口:如何在弹出窗口周围添加边框?
任何想法如何设计一个Popup有边界和可能的阴影效果?
谢谢,我最终通过设置边框就像给它一个类似3D的(几乎)外观:
<Border BorderBrush="White" BorderThickness="3,3,0,0">
<Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>
看起来相当不错!
<Popup PopupAttributes="SetByYou">
<Border BorderAttribute="SetByYou">
<!-- Content here -->
</Border>
</Popup>
显然弹出窗口当前不支持阴影,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>
的点要注意的是嵌套的画布需要比大小的它的容器小。 AllowsTransparency也必须设置。
+1提醒我有关'AllowsTransparency' – quetzalcoatl 2013-08-26 09:01:17
容易得多是把保证金周围的弹出边界足够大的DropShadowEffect,即
<Border ... Margin="0 0 8 8">
<Border.Effect>
<DropShadowEffect ... />
</Border.Effect>
<!-- Popup Content Here -->
</Border>
弹出式窗口应该允许透明度,即AllowsTransparency =真。
我真的很困扰滴阴影的东西,这真的帮了我。添加保证金是一个很棒的主意! – Franchesca 2013-01-03 10:48:30
该保证金为我工作完美!非常感谢 – Chris 2013-05-01 12:50:56
这很明显,因为它在答案中,但弹出窗口中的AllowsTransparency =“True”是最重要的部分。如果你像我一样想念它,你会在你的弹出窗口周围留下一个黑色的边框。 – Brandon 2016-06-14 15:22:05
你应该小心使用这些效果,大部分时间他们是sloooowwwwwww。 – 2009-09-15 14:54:19