2016-03-29 32 views
1

對於自定義Style,我在ControlTemplate的內部有一個Popup控件。對於這種控制,我想設置HasDropShadow取決於在XAML文件頂部的變量聲明,如下所示:在Popup上設置HasDropShadow屬性

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

所以,我想聲明的彈出像這樣(只有相關部分所示):

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

但是這給了我以下錯誤。

屬性「HasDropShadow」沒有可訪問的setter。

'HasDropShadow'屬性爲只讀屬性,不能從標記中設置。

所以我檢查MSDN果然:

陰影效果時會顯示SystemParameters.DropShadow屬性和Popup.AllowsTransparency屬性被設置爲true。

所以不是我想我可以繞過這一點,並設置自定義陰影就取決於我的變量彈出,所以我嘗試了以下觸發:

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

但是,當然,這並不能一起工作以下錯誤消息:

「System.Boolean」類型的對象不能應用於需要類型「System.Windows.DependencyProperty」的屬性。

是否有反正我可以根據靜態變量設置投影?

回答

1

我得到這個使用DataTrigger並向StaticResource喜歡下面結合它的工作:

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

,然後使用DropShadowEffect類,它提供我自己的陰影。