Ich habe ein Fenster wie folgt erstellt:
Window myWindow = new Window();
Wie kann ich diesem Fenster eine vertikale Bildlaufleiste hinzufügen und die Bildlaufleiste nur sichtbar machen, wenn die Höhe nicht groß genug ist, um alle Elemente anzuzeigen.
Sie können dem Fenster ein ScrollViewer - Element hinzufügen und die erforderlichen Steuerelemente in das ScrollViewer - Steuerelement einfügen.
<ScrollViewer VerticalScrollBarVisibility="Auto">
...
</ScrollViewer>
Oder wenn Sie es in der Code-Behind-Datei codieren möchten, können Sie schreiben
ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window
Sie können einem Fenster selbst keine Bildlaufleiste hinzufügen. Sie können den Steuerelementen nur Bildlaufleisten hinzufügen. I.E. zu einem Raster in Ihrem Fenster.
Beispiel:
<Grid ScrollViewer.CanContentScroll="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
...
</Grid>
BEARBEITEN:
Ich habe gerade erkannt, dass Window auch eine ScrollViewer-Eigenschaft hat. Ich bin nicht sicher, wie diese Eigenschaft für ein Fenster funktioniert und wie ein solches Fenster aussehen würde. Probieren Sie es aus, aber es werden keine Bildlaufleisten angezeigt.
EDIT 2:
ScrollViewer sv = new ScrollViewer();
sv.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
myGrid.Children.Add(sv);
versuche dies
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 };
}