2010-07-03 6 views
0

J'ai deux contrôles dans une grille, une Ellipse et un Popup. L'idée est que les deux contrôles ne sont affichés que si la propriété IsDirty dans un modèle de vue est true; si c'est le cas, l'Ellipse est verte si la même vue est IsValid et rouge sinon, tandis que le Popup affiche des messages si l'utilisateur a la souris sur le popup. Le contenu et les liaisons pour le Popup sont corrects, donc je me demande si je devrais être capable de contrôler si c'est IsOpen ou non en utilisant un trigger dans son propre style comme dans le code ci-dessous.Le déclencheur contextuel ne fonctionne pas comme prévu

Cheers,
Berryl

<Popup x:Name="dirtyPopup" AllowsTransparency="True" > 
    <Popup.Style> 
     <Style TargetType="Popup"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="IsOpen" Value="{Binding IsDirty}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Popup.Style> 
    <Grid content goes here /> 
</Popup> 

Répondre

1

Je ne pense pas que vous voulez lier à IsMouseOver sur le Popup. Cela ne sera vrai que si la souris est sur la fenêtre Popup elle-même, ce qui ne peut arriver que si le Popup est déjà ouvert, donc vous ne serez jamais capable de l'ouvrir en premier lieu.

Vous voulez probablement que le popup soit ouvert si la souris est au-dessus d'un autre contrôle, tel que l'Ellipse. La façon la plus simple de le faire est un ToolTip. Si vous définissez la propriété Info-bulle sur votre Ellipse, lorsque la souris est terminée, la fenêtre contextuelle Ellipse une info-bulle s'affiche. Quelque chose comme ceci:

<Ellipse> 
    <Ellipse.ToolTip> 
     <Grid content goes here /> 
    </Ellipse.ToolTip> 
</Ellipse> 
+0

Oh oui - merci! – Berryl

+0

Mais ai-je besoin d'un popup si je veux montrer un lien hypertexte sur lequel l'utilisateur peut cliquer dans le cadre du contenu? Des conseils sur la façon de le faire si oui? – Berryl

Questions connexes