C# 如何在C中向窗口添加滚动条#
我创建了一个窗口,如下所示:C# 如何在C中向窗口添加滚动条#,c#,wpf,window,vertical-scrolling,C#,Wpf,Window,Vertical Scrolling,我创建了一个窗口,如下所示: Window myWindow = new Window(); 如何将垂直滚动条添加到此窗口,并使滚动条仅在高度不足以显示所有元素时可见。无法将滚动条添加到窗口本身。只能向控件添加滚动条。也就是说,你的窗户里面有一个格子 例如: <Grid ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto"> ... <
Window myWindow = new Window();
如何将垂直滚动条添加到此窗口,并使滚动条仅在高度不足以显示所有元素时可见。无法将滚动条添加到窗口本身。只能向控件添加滚动条。也就是说,你的窗户里面有一个格子 例如:
<Grid ScrollViewer.CanContentScroll="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
...
</Grid>
您可以向窗口中添加一个元素,并将必要的控件放入ScrollViewer控件中
试试这个
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 };
}
谢谢你的回复。我没有使用XAML创建网格,而是使用Grid编程创建了它。我应该设置网格的哪些属性来获取滚动条?我没有ScrollViewer属性。你用的是什么版本的.NET?@Gunner-我用的是.NET3.5SP1。ScrollViewer位于System.Windows.Controls.ScrollViewer中
<ScrollViewer VerticalScrollBarVisibility="Auto">
...
</ScrollViewer>
ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window
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 };
}