web-dev-qa-db-fra.com

Comment ajouter une barre de défilement à la fenêtre en C #

J'ai créé une fenêtre comme suit:

Window myWindow = new Window();

Comment puis-je ajouter une barre de défilement verticale à cette fenêtre et la rendre visible uniquement si la hauteur n'est pas assez grande pour afficher tous les éléments.

20
Shamim Hafiz

Vous pouvez ajouter un élément ScrollViewer à votre fenêtre et placer les contrôles nécessaires dans le contrôle ScrollViewer.

<ScrollViewer VerticalScrollBarVisibility="Auto">
    ...
</ScrollViewer>

Ou si vous voulez le coder dans le fichier code-behind, vous pouvez écrire

ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window
52
Osiris76

Vous ne pouvez pas ajouter une barre de défilement à une fenêtre elle-même. Vous ne pouvez ajouter que des barres de défilement aux contrôles. C'EST À DIRE. à une grille à l'intérieur de votre fenêtre.

Exemple:

<Grid  ScrollViewer.CanContentScroll="True"
       ScrollViewer.HorizontalScrollBarVisibility="Auto">
   ...
</Grid>

MODIFIER:

Je viens de me rendre compte que Window a aussi une propriété ScrollViewer. Je ne sais pas comment cette propriété fonctionne pour une fenêtre ni à quoi ressemblerait une telle fenêtre. J'ai essayé, mais aucune barre de défilement ne s'est affichée.

EDIT 2:

ScrollViewer sv = new ScrollViewer();
sv.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
myGrid.Children.Add(sv);
2
Christian

essaye ça

var xpage = your user control or page to which scroll bar need to be added at runtime

            xpage.SetValue(ScrollViewer.CanContentScrollProperty, true);
            xpage.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
            xpage.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);

            var scrollViewer = xpage.Content as ScrollViewer;
            if (scrollViewer != null)
            {
                var content = scrollViewer.Content;
                scrollViewer.Content = null;
                xpage.Content = content;
            }
            else
            {
                var content = xpage.Content;
                xpage.Content = null;
                xpage.Content = new ScrollViewer { Content = content };
            }
0
NidhinSPradeep