我有一个Canvas
名为 mainCanvas 并且我以编程方式将 aScrollViewer
和 a添加StackPanel
到它的顺序
...主画布
......滚动视图
.........pnl
...... (更多堆叠控件)
我试图让我的 StackPanel 自动调整为 mainCanvas 大小,并在它太大时允许滚动。到目前为止的代码如下
mainCanvas.Children.Clear();
// Create the container
ScrollViewer scrollView = new ScrollViewer();
scrollView.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
scrollView.CanContentScroll = true;
scrollView.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
scrollView.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
StackPanel pnl = new StackPanel();
//pnl.Height = 500; //Works and allows scrolling but doesn't resize
pnl.Height = Double.NaN; //(Double.NaN is Auto) Doesn't Work - StackPanel overflows parent window
pnl.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
pnl.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
scrollView.Content = pnl;
// Add the ScrollView and StackPanel to Parent Window
mainCanvas.Children.Add(scrollView);
不幸的是,StackPanel 不适合父级并且不会自动调整大小。
mainCanvas
XAML 中已存在设置:
宽度=“自动”
高度=“自动”
HorizontalAlignment = "拉伸"
VerticalAlignment = "拉伸"
pnl.Height = 500;
如果 Stackpanel 高度受到限制,我可以通过使用它来显示滚动条确实可以工作。但这只是手动将高度调整为全屏大小,因此在调整应用程序大小时不会自动调整大小。
我希望设置pnl.Height = Double.NaN;
为自动和 V/H 调整到 Stretch 会起作用,但 StackPanel 仍然会将所有控件重叠到它的最大尺寸。
当我通过滚动调整父级和/或主应用程序窗口的大小时,谁能指出我正确的方向以使我的 StackPanel 适合父级 mainCanvas 并自动调整大小?
谢谢