2016-03-29 6 views
1

Ich habe eine Popup Steuerung innerhalb einer ControlTemplate für eine benutzerdefinierte Style. Für diese Steuerung würde Ich mag die HasDropShadow abhängig von einer Variablen an der Spitze der XAML-Datei setzen, erklärte wie folgt:Festlegen der HasDropShadow-Eigenschaft für ein Popup

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

So versuchte ich, wie so das Popup erklärt (Es werden nur relevante Teile dargestellt):

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

Aber das gibt mir die folgenden Fehler.

Die Eigenschaft "HasDropShadow" hat keinen zugänglichen Setter.

'HasDropShadow' Eigenschaft ist schreibgeschützt und kann nicht aus Markup festgelegt werden.

So überprüfte ich MSDN und sicher genug:

Ein Schlagschatten-Effekt angezeigt, wenn die SystemParameters.DropShadow Eigenschaft und die Popup.AllowsTransparency Eigenschaft auf true gesetzt werden.

Anstatt also ich dachte, dass ich das umgehen könnte und einen benutzerdefinierten Schlagschatten auf der Popup-Set auf meiner Variable je so habe ich versucht, den folgenden Trigger:

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

Aber natürlich dies mit nicht funktionierte folgende Fehlermeldung:

Ein Objekt vom Typ "System.Boolean" kann nicht auf eine Eigenschaft angewendet werden, die den Typ "System.Windows.DependencyProperty" erwartet.

Kann ich den Schlagschatten trotzdem abhängig von der statischen Variable setzen?

Antwort

1

Ich habe dies durch zu arbeiten, um ein DataTrigger und Bindung es mit auf die StaticResource folgt erhalten:

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

Und dann Schatten meines eigenen Tropfen Bereitstellung der DropShadowEffect Klasse.