我在我的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