Comment placer un ScrollViewer sur le dessus du contenu, il doit défiler
Je voudrais mettre mon ScrollViewer de telle manière à ce qu'elle chevauche/se trouve sur le contenu qu'il défile. Je voudrais définir l'Opacité du ScrollViewer, de sorte que le contenu est visible en dessous.
Autant je comprends la valeur par défaut ScrollViewer, cela ne semble pas être possible hors de la boîte, puisque le contenu est imbriquée à l'intérieur du ScrollViewer.
Toutes les idées sur la façon de faire ce travail?
EDIT: je comprends que le ScrollViewer est un Décorateur et que le contenu n'est pas au courant de la ScrollViewer. Cette séparation est bonne et je ne veux pas le contenu pour être au courant de la ScrollViewer. Ce que j'essaie de faire est purement visuelle (mise en page). Simplement montrer le ScrollViewer sur le dessus du contenu.Le comportement du ScrollViewer devrait rester inchangé.
OriginalL'auteur Patrick Klug | 2009-01-29
Vous devez vous connecter pour publier un commentaire.
Je pense que maintenant, je comprends ce que tu veux dire par "en haut" - une façon de le faire est d'utiliser un modèle de contrôle qui rend le ScrollContentPresenter durée de deux lignes et de colonnes de la grille, tandis que les Barres de défilement sont dans la 2e lignes et de colonnes. Les Barres de défilement sont configurés pour être semi-transparent. Le contenu sera désormais dessiner sous les barres de défilement!
Le Style, j'ai essayé et qui fonctionne comme suit:
Exemple d'utilisation:
Le résultat est le long des lignes de cette:
Il serait simple de modifier cela pour que les Barres de défilement sont d'abord très transparent (par exemple, l'Opacité = 0.2) et de devenir plus opaque lorsque la souris entre dans la barre de Défilement. Ce serait un bel effet et de garder les Barres de défilement en dehors de la voie jusqu'à ce qu'ils sont nécessaires.
EDIT:
J'ai écrit ce mon blog pour ceux qui voudraient un peu plus de détails.
C'est génial, merci Daniel
Je suis à l'aide de cette combinaison avec un en-tête pour une listview. Malheureusement, ma barre de défilement se superpose à l'en-tête. Comment puis-je corriger cela s'il vous plaît? J'ai demandé à un la question ici si vous préférez répondre de cette façon. Merci à l'avance!
OriginalL'auteur Daniel Paull
L'idée est que le ScrollViewer est un décorateur pour la chose que c'parchemins et des clips. La chose le défilement est complètement ignorant de la vitesse de défilement. C'est simple et élégant - pourquoi n'est-il pas suffisant dans votre cas?
Après avoir dit que, si le ScrollViewer ne pas faire ce que vous voulez, je vous suggère de créer des contrôles de barre de Défilement et de gérer les événements générés par les, déplacer le contenu que vous souhaitez faire défiler dans les gestionnaires d'événements. Vous pouvez même être en mesure de faire un peu de fantaisie de liaison de données pour éviter d'écrire des gestionnaires d'événements. Je ne suis pas sûr de savoir comment vous allez clip le contenu correctement, mais c'est une nouvelle boîte de pandore.
Si vous avez besoin de mise en page d'un contrôle sur le dessus de l'autre, utiliser un contrôle de zone de dessin.
Désolé, je pense que j'ai mal compris ce que vous essayez de le faire! Voir mon autre réponse, une solution qui (je pense) est-ce que vous êtes après.
OriginalL'auteur Daniel Paull
Je ne suis pas sûr si vous souhaitez placer la barre de défilement de la scrollviewer sur le dessus du contenu - si réponse 1, si vous voulez tout le scrollViewer ontop du contenu, voir la réponse 2.
1) Vous pouvez modifier la représentation visuelle de quoi que ce soit dans WPF par l'application d'un modèle. L'astuce dans ce cas est de trouver ce que la représentation de la ScrollViewer, et puis l'essentiel, de mettre en œuvre tous les mêmes visuels juste changeing la position de la barre de Défilement en tant que de besoin. Il ya un couple de façons de trouver tous les visuels pour un contrôle le plus simple est de le WPF Échantillons MSDN - et bien assez le ScrollViewer exemple fourni par Microsoft montre comment modifier la position de la barre de défilement.
BTW Microsoft ont tendance à charger leurs exemples avec beaucoup de Xaml que vous n'avez pas vraiment besoin - play (impitoyablement coupé du code) avec le modèle jusqu'à ce qu'il fait exactement ce que vous voulez et rien de plus.
2) Mon approche de la passation de la faire défiler la vue ontop du contenu, serait d'utiliser deux scrollviewers placé sur le dessus les uns des autres. Le sommet est petit, translucide (opacity = 50) et gère le défilement, le fond est large et dispose le document. Fil de l'événement scroll à partir du haut ScrollViewer de sorte qu'il sera aussi un défilement vers le bas.
OriginalL'auteur MrTelly