Question

I ai une commande qui se dilate quand IsMouseOver est réglé sur vrai en utilisant un déclencheur. Au sein de ce contrôle, il y a quelques zones de texte qui ont une certaine validation de base. Mon problème est que lorsqu'une erreur de validation se produit et les souris de l'utilisateur sur la frontière rouge autour de la zone de texte (presque guarenteed arriver que l'utilisateur déplace la souris au centre de la zone de texte pour changer la valeur), le IsMouseOver se défini sur false et la fermeture du contrôle .

Erreur de validation pour zones de texte:

<Style TargetType="{x:Type TextBox}">
    <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
            <Setter Property="ToolTip" Value="{Binding 
                Path=(Validation.Errors)[0].ErrorContent, 
                RelativeSource={x:Static RelativeSource.Self}}" />
        </Trigger>
    </Style.Triggers>
</Style>

Trigger pour le contrôle show:

<DataTrigger Binding="{Binding ElementName=TabControl_TabPanel, Path=IsMouseOver}" Value="True">
    <Setter Property="Visibility" Value="Visible" />
</DataTrigger>

Mise à jour: IsMouseOver est également définie sur False se quand je clic droit sur une zone de texte et ouvrir le menu contextuel

Était-ce utile?

La solution

Dans le cas du menu contextuel, les choses sont assez claires: il est une autre fenêtre (à un niveau bas), de sorte que votre commande ne peut pas détecter quoi que ce soit peut-être « bien », il. De même, les erreurs de validation dans WPF sont affichées de manière complexe et alambiquée, et il suffit de dire qu'ils ne sont pas vraiment partie de votre commande soit.

Je suggère d'utiliser des événements de mise au point pour votre scénario; est la souris sur vraiment nécessaire? Il peut y avoir des façons de le faire fonctionner si ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top