在Popup上设置HasDropShadow属性

时间:2016-03-29 11:06:17

标签: wpf wpf-controls

对于自定义Popup,我在ControlTemplate内有一个Style控件。对于这个控件,我想设置HasDropShadow取决于声明的xaml文件顶部的变量:

<sys:Boolean x:Key="IsDropShadowEnabled">true</sys:Boolean>

所以我尝试像这样声明Popup(只显示相关部分):

<Popup AllowsTransparency=true HasDropShadow="{StaticResource IsDropShadowEnabled}"/>

但是这给了我以下错误。

  

该物业&#34; HasDropShadow&#34;没有可访问的二传手。

     

&#39; HasDropShadow&#39; property是只读的,不能通过标记设置。

所以我检查了MSDN,当然:

  

当SystemParameters.DropShadow属性和Popup.AllowsTransparency属性设置为true时,会显示阴影效果。

所以相反我认为我可以绕过这个并根据我的变量在弹出窗口上设置自定义投影,所以我尝试了以下触发器:

<Trigger Property="{StaticResource IsDropShadowEnabled}" Value="true">

但是,当然这并没有使用以下错误消息:

  

&#34; System.Boolean&#34;类型的对象无法应用于需要类型&#34; System.Windows.DependencyProperty&#34;的属性。

无论如何我可以根据静态变量设置阴影吗?

1 个答案:

答案 0 :(得分:1)

我使用DataTrigger将其绑定到StaticResource,如下所示:

<DataTrigger Binding="{Binding Source={StaticResource IsDropShadowEnabled}}" Value="true">

然后使用DropShadowEffect类提供我自己的投影。