2011-12-24 84 views
-1

我的意圖很簡單。創建一個用戶可以滾動該特定面板中的許多控件的排序面板。該面板中的控件可能是按鈕,或圖像或標籤..無論如何。WP7 ScrollViewer根本不起作用

事情是......如果我讓我的ScrollViewer垂直滾動,但它不會顯示其內部的所有控件,並且它不會停留在滾動它的位置。如果我把它做成水平的,我就是這麼想的,它根本不會滾動......沒有一點。

以下是我的代碼:請幫助!

<ScrollViewer Height="118" Name="scrollerButtons" Width="362" Canvas.Left="167" Canvas.Top="275" VerticalAlignment="Center"> 
     <StackPanel Height="97" Name="stackPanelButtons" Width="168" Orientation="Horizontal" Canvas.Left="162" Canvas.Top="43" VerticalAlignment="Center" HorizontalAlignment="Center"> 
       <Button Width="60" Height="60"> </Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
       <Button Width="60" Height="60"></Button> 
     </StackPanel> 
     </ScrollViewer> 

我添加了一堆按鈕只是爲了測試整個事情。高度讚賞任何幫助。謝謝。

回答

2

從StackPanel中刪除Height屬性。你迫使內部的StackPanel截斷它的內容。由於內部StackPanel比ScrollViewer(118)更小(97),因此ScrollViewer無法滾動。 ScrollViewer 預計其內容大於ScrollViewer本身。

+0

嘿那裏瓊斯。我是那麼做的。仍然不起作用。 – Subby 2011-12-24 18:16:10

+0

我修好了!我添加了這個:ScrollViewer.Horizo​​ntalScrollBarVisibility =「Auto」ScrollViewer.VerticalScrollBarVisibility =「Visible」 – Subby 2011-12-24 18:32:22

0

我所做的是在包含堆棧面板的網格上聆聽SizeChangedEvent,然後相應地調整ScrollViewer的高度。在這裏,例如,我只是把它做成屏幕尺寸的一半。這不是完美的,但它的工作原理。

private void ContentPanel_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
     // Resize the scroll view if the stackpanel is bigger, additional 70 for app bar 
     if (e.NewSize.Height > 
       (System.Windows.Application.Current.Host.Content.ActualHeight - 70)) 
     { 
       ContentScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; 
       ContentScrollViewer.Height = System.Windows.Application.Current.Host.Content.ActualHeight/2; 
     } 
}