2010-06-04 6 views
1

j'ai un UserControl, dans la section Ressources J'ai le code commeWPF Triggers et styles

<Style TargetType="{x:Type Viewbox}"> 

     <Style.Triggers> 
      <Trigger Property="Viewbox.IsMouseOver" Value="True"> 
       <Setter Property="Viewbox.Effect" > 
        <Setter.Value> 
         <DropShadowEffect Color="DarkGray" Direction="45" BlurRadius="30"></DropShadowEffect> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

SO cela fonctionne pour la ViewBox que j'ai dans ce contrôle,

mais quand je fais

<Viewbox.Triggers> 
     <Trigger Property="Viewbox.IsMouseOver" Value="True"> 
      <Setter Property="Viewbox.Effect" > 
       <Setter.Value> 
        <DropShadowEffect></DropShadowEffect> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Viewbox.Triggers> 

dans la vue Box Je reçois des erreurs ....

Est-il possible d'ajouter des déclencheurs locaux la ViewBox sans utiliser de Style?

Répondre

2

De MSDN

La collection de déclencheurs établis sur un seul élément supporte EventTrigger, pas bien déclencheurs (Trigger). Si vous avez besoin déclencheurs de propriété, vous devez placer ceux-ci dans un style ou modèle et puis attribuez-lui ce style ou modèle pour l'élément soit directement par la propriété Style, ou indirectement par une référence de style implicite.

1

Les collections Triggers de FrameworkElements et de styles et modèles acceptent différents types de déclencheurs. Pour FrameworkElement.Triggers, vous pouvez uniquement utiliser EventTrigger, couramment utilisé pour démarrer les animations. Les collections Style, ControlTemplate et DataTemplate Triggers peuvent utiliser le plus commun Trigger et DataTrigger comme vous utilisez. C'est une installation étrange qui est toujours ressentie comme une fonctionnalité inachevée. Vous pouvez modifier votre code pour utiliser un Storyboard pour animer les propriétés de DropShadowEffect à partir d'un EventTrigger ou simplement utiliser l'approche Style.