我Popup在我的XAML中有一个显示一些信息.弹出框时,它没有Border,似乎Background与页面混合.它只需要一个Border,理想情况下它背后的阴影,以显示某种分层和焦点.
任何想法如何设置Popup的边框和可能的阴影效果?
小智 26
在我看来,更简单的是在Popup Border周围留下足够大的余量用于DropShadowEffect,即
<Border ... Margin="0 0 8 8">
<Border.Effect>
<DropShadowEffect ... />
</Border.Effect>
<!-- Popup Content Here -->
</Border>
Run Code Online (Sandbox Code Playgroud)
Popup应该允许透明度,即allowsTransparency = True.
Ran*_*pho 10
<Popup PopupAttributes="SetByYou">
<Border BorderAttribute="SetByYou">
<!-- Content here -->
</Border>
</Popup>
Run Code Online (Sandbox Code Playgroud)
显然,弹出窗口目前不支持投影,请参见link。
但是,我想出了一种解决方法,该方法在IMO上效果很好。基本上,这个想法是让一个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>
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,嵌套的画布需要小于其容器的大小。还必须设置AllowsTransparency。
谢谢,我最终通过将边框设置为类似 3D 的(几乎)外观:
<Border BorderBrush="White" BorderThickness="3,3,0,0">
<Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>
Run Code Online (Sandbox Code Playgroud)
看起来相当不错!
| 归档时间: |
|
| 查看次数: |
20930 次 |
| 最近记录: |