2

我正在使用 WrapPanel 来格式化一些文本。在运行时,我将 TextBlocks 和 StackPanels 添加为子项。显然我需要一个滚动条,具体取决于数据大小。在网上搜索我发现了多个答案,它们都建议在 WrapPanel 周围放置一个 ScrollViewer。这对我来说很有意义,但我无法让它发挥作用。这是我的代码:

scrollView = new ScrollViewer();
scrollView.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
scrollView.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
scrollView.HorizontalAlignment = HorizontalAlignment.Stretch;
scrollView.VerticalAlignment = VerticalAlignment.Stretch;
scrollView.Margin = new Thickness(0);
scrollView.BorderThickness = new Thickness(0);  

textPanel = new WrapPanel();
textPanel.Width = Width;
scrollView.Content = textPanel;

那是行不通的。ScrollViewer 似乎随着包含的 WrapPanel 一起增长。如果我将垂直滚动条设置为可见,我可以看到滚动条随着内容的增长而增长。但是 ScrollViewer 从包含窗口中长出来,因此永远不会显示滚动条。

任何暗示我可能做错了什么?

干杯,阿奇姆

4

1 回答 1

3

您需要一些东西来限制 WrapPanel 和 ScrollViewer 的大小 - 您可以设置查看器的宽度和高度,然后在 wrappanel 上使用元素绑定:

 <ScrollViewer x:Name="ScrollViewer1" 
Width="200" 
Height="200"  
ScrollViewer.VerticalScrollBarVisibility="Visible"
  ScrollViewer.HorizontalScrollBarVisibility="Visible" >
                <controls:WrapPanel 
                      Width="{Binding ElementName=ScrollViewer1, Path=Width}" 
                      Height="{Binding ElementName=ScrollViewer1, Path=Height}">

希望有帮助。

伊恩

于 2009-05-22T16:49:02.497 回答