2009-05-22 29 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