WPF Animer Fenêtre de Visibilité du Changement
Je suis à essayer de comprendre comment animer le changement de Visibile Cachés pour une fenêtre WPF. La façon dont j'ai actuellement la demande de travail est que la fenêtre est normalement caché et quand je bouge la souris sur le côté de l'écran, elle apparaît, je suis à l'aide d'un booléen pour la visibilité convertisseur de le faire, mais ce que je voudrais faire c'est d'avoir la demande de glisser plus facilement sur la souris au-dessus ainsi que glisser vers l'arrière à nouveau par la suite.
Je n'ai pas n'importe quoi avec des animations donc je ne suis pas sûr de la façon de le faire. Tout d'abord, je ne suis pas vraiment sûr de ce que l'animation que je devrais utiliser le faire, d'autre part, je ne suis pas vraiment sûr de savoir si je doit déclencher sur la IsWindowVisibile" propriété du viewmodel ou si je doit le lier à la VisibilityChanged événement et, troisièmement, je ne suis pas sûr si cela est possible lorsque la taille de la fenêtre est variable.
[Modifier]
Si nécessaire, je vais "prendre" une opacité de la solution, mais ce n'est pas exactement le 'glissement' effet je cherche à obtenir.
OriginalL'auteur John | 2010-12-21
Vous devez vous connecter pour publier un commentaire.
J'ai fait quelque chose comme ça (opacité passe à 0 pendant 2 secondes et la fenêtre se cache): il suffit de regarder le code, c'est simple
MainWindow.xaml:
MainWindow.xaml.cs
Appelez simplement
HideMe()
ouShowMe()
au lieu deVisibility = Visibility.Hidden
dans le codeModifier
WPF est lente lorsque le déplacement de windows, donc si vous avez besoin de glissement de l'animation:
Faire une fenêtre transparente (
AllowsTransparency="True" Background="Transparent" WindowStyle="None"
)Mettre toutes vos commandes sur panneau opaque (
Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}"
)Animer ce panneau est
Margin.Left
de0
à la fenêtreActualWidth
, puis masquer une fenêtre - cela permettra d'éliminer un problème de l'économie de la taille de la fenêtreJe veux utiliser ce code pour un DockPanel Panneau, mais je ne peux pas mettre Storyboard dans le xmal fichier, comment puis-je le faire ?
Vous aurez besoin de créer une table de montage dans le code, comme
var sb = new Storyboard(); sb.Children.Add(opacityAnimation); sb.Children.Add(visibilityAnimation); sb.Begin(this)
mais pourquoi pas dans le fichier xaml comme votre exemple ? j'ai essayer bientôt ! merci
Dans le commentaire précédent, vous avez affirmé que vous ne pouvez pas le mettre en xaml, j'ai donc proposé non xaml façon
OriginalL'auteur Mykola Bogdiuk
Jouer avec une Fenêtre
Opacity
/Visibility
nécessite un simpleDoubleAnimation
.Exemple:
Problème:
Pour que cela fonctionne comme prévu, vous devez définir
AllowsTransparency
àTrue
sur votre fenêtre. Si vous ne définissez pas ce que la fenêtre avecOpacity
ensemble de0
seraBlack
.Le problème, c'est pour cette propriété
True
, vous devez avoirWindowStyle
commeNone
. Ce qui signifie pas de cadre autour de votre fenêtre. Cela signifie pas de fermer, réduire, agrandir, restaurer la barre de titre.Vous devez fournir un modèle personnalisé (probablement hériter
Window
la classe) pour mettre ces boutons là-haut.Cela est probablement dû au fait que nous sommes installés à pas visible avant de l'animation est en cours d'exécution.
OriginalL'auteur decyclone