2009-05-22 57 views
2

我正在使用WrapPanel格式化一些文本。在运行期间,我将TextBlocks和StackPanels添加为Children。很显然,我需要一个滚动条,具体取决于数据大小。在网上搜索我发现了多个答案,所有人都建议在WrapPanel上放置一个ScrollViewer。这对我来说很合理,但我无法实现。这是我的代码:Silverlight:无法管理让ScrollViewer和WrapPanel一起工作

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会从包含窗口中增长出来,因此不会显示任何滚动条。

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

欢呼声, 阿希姆

回答

3

你需要的东西contrain的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}"> 

希望有帮助。

伊恩

+0

是的,这可能是问题所在。我将ScrollViewer移动到一个网格中 - 这似乎限制了网格的大小 - 并且所有的工作都被罚款了。感谢您的回答! – Achim 2009-05-23 16:43:18