Bouton de réglage Visiblity avec la Souris
Je veux afficher un bouton uniquement lorsque l'utilisateur place la souris au-dessus de son emplacement, une fois que la souris quitte la zone, le bouton doit retourner à être Caché. Voici mon code pour les boutons.
<StackPanel Name="ButtonOptions" Orientation="Horizontal" DockPanel.Dock="Bottom" Background="DarkBlue" Height="50" Width="auto">
<!--<StackPanel.Resources>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>-->
<Button Name="LoginButton" FontSize="12" Click="LoginButton_Click" Content="Log In" Width="100" Height="31" Margin="50,0,0,0"
FontFamily="Arial" Visibility="Visible" IsEnabled="True" MouseEnter="LoginButton_MouseEnter" />
<Button Name="OptionsButton" Content="Options" Width="100" Height="31" Margin="20,0,0,0" FontFamily="Arial"
FontSize="12" Click="OptionsButton_Click" Visibility="Hidden" IsEnabled="False"/>
</StackPanel>
Les ressources de la section est commenté car j'ai essayé et ça ne marchait pas. Mon bouton se connecter a la suite de ce gestionnaire attachés..
LoginButton.MouseEnter += new MouseEventHandler(LoginButton_MouseEnter);
La méthode qui gère ce est..
private void LoginButton_MouseEnter(object sender, MouseEventArgs e)
{
MessageBox.Show("Made in the login button listener for mouseOver");
LoginButton.Visibility = Visibility.Visible;
}
Quand je lance mon application, rien ne se passe quand je mets plus de l'endroit où le bouton doit être. Cependant, si j'ai mis le bouton de connexion de la visibilité pour être Visible au départ, je peux voir le bouton, et lorsque je clique sur elle, mon journal dans la logique de la méthode pour les utilisateurs signe en est substituée, et je suis invité avec le message dans la boîte de MouseEventListener méthode pour "Made in le bouton de connexion écouteur pour survol". Non seulement cela, mais je reçois deux de ces messages (dès que je clique sur "Ok" pour la première fois, il apparaît immédiatement de nouveau) je ne suis pas sûr de savoir pourquoi il ne fonctionne pas, ni pourquoi ma méthode événement de clic est ignoré et MAINTENANT le mouseEvent méthode se produit.
Des idées ou de l'aide serait apprécié, merci!
- Les événements ne se déclenche pas lorsqu'un bouton est caché ou s'est effondré.
- N'utilisez pas de pop-ups pour diagnostiquer les souris de contrôle. Vous êtes l'obtention de deux pop-ups parce que quand vous passez la souris sur la boîte de dialogue pour la fermer, vous n'êtes plus on passe la souris sur l'élément qui a déclenché cela! Lorsque la boîte de dialogue se ferme, il va en tirer avec la souris sur l'événement.
- Je pense que c'est vrai, mais vous pourriez être en mesure de le remplacer si vous obtenez IsHitTestVisible.
- Comme mentionné ci-dessus Visibiliy.Caché pourrait provoquer le bouton pour arrêter de recevoir des événements de la souris. La documentation MSDN sur la Visibilité ne fait pas mention de cette même si. Si rien d'autre ne fonctionne essayez de basculer la Propriété d'Opacité au lieu de Visibilité et de voir si cela aide.
- Je viens de proposer, à l'aide de l'opacité ainsi. Je suis sûr que vous aurez toujours les événements de la souris lorsque l'opacité est définie sur 0. Aussi, comme un bonus, vous pourriez penser à l'animation de l'opacité lorsque vous passez la souris sur de sorte que vous bouton fondus dans au lieu de sauter dans. Tout cela, bien sûr, est ignorant si ou de ne pas avoir d'éléments cachés est une bonne idée, en premier lieu!
- Je pense que la raison pour laquelle j'ai été faire deux popUps est parce que j'ai définies dans le mouseEvent dans le XAML et le code derrière. J'ai supprimé le "LoginButton.MouseEnter += ...." ligne et le même comportement se produit, mais je ne reçois un pop-up boîte de dialogue. Votre animation idéale semble assez cool, même si je viens de commencer l'apprentissage de WPF (évidemment) et n'ont aucune idée de comment animer encore rien.
- Li (et un peu MattBurland) - L'OPACITÉ de réglage fonctionne, merci pour l'aide tout le monde!
Vous devez vous connecter pour publier un commentaire.
Hors-sujet:
Tout d'abord, des éléments apparaissent soudainement "sous" votre souris est vraiment une mauvaise conception et je vous conseille pour le changer.
Sur le sujet:
Comme déjà mentionné dans la section des commentaires, à chaque fois qu'un contrôle est Caché ou s'est Effondré, il va arrêter le traitement d'entrées, de sorte que vous ne déclenchent pas tous les déclencheurs.
Vous pouvez utiliser la propriété d'Opacité de mettre en œuvre le comportement que vous cherchez et, en outre utiliser EventTriggers sur "MouseEnter" et "MouseLeave" pour être en mesure de mettre une belle animation. Voici comment j'aurais pu écrire ce style:
Maintenant, de retour sur ma première idée, je suggère fortement de garder le bouton visible même quand la souris n'est pas dessus (opacity = 0,2 dans mon exemple ci-dessus) et de jouer avec le temps d'animation. Si ce n'est pas une option, vous pouvez toujours définir l'animation des durées de 0:0:0 et la valeur d'opacité ti 0 et vous obtiendrez le même résultat que la Visibilité (au moins visuellement).
Plus Tard Edit:
Vous devez appliquer le style sur vos boutons comme ceci: