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.
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
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);
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 };
}