2011-12-24 4 views
-1

Мое намерение прост. Создайте сортировку, в которой пользователь может прокручивать многие элементы управления на этой конкретной панели. Элементы управления внутри этой панели могут быть кнопками, изображениями или ярлыками .. безотносительно.WP7 ScrollViewer просто не работает

Thing is ... Если я создаю свой ScrollViewer Vertical, он прокручивается, но он не отображает все элементы управления внутри себя, и он не остается в точке, где я прокручивал его. И если я сделаю его горизонтальным, то, как я хочу, он не прокручивается вообще ... Не один бит.

Ниже представлен мой код: ПОЖАЛУЙСТА, ПОМОГИТЕ!

<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

Удалить атрибут Height из StackPanel. Вы вынуждаете внутренний StackPanel обрезать его содержимое. Так как внутренний StackPanel меньше (97), чем ScrollViewer (118), для прокрутки ScrollViewer нет ничего. ScrollViewer ожидает, что его содержимое будет больше, чем сам ScrollViewer.

+0

Эй, Джонс. Я сделал именно это. Все еще не работает. – Subby

+0

Я исправил это! Я добавил это: ScrollViewer.HorizontalScrollBarVisibility = "Auto" ScrollViewer.VerticalScrollBarVisibility = "Visible" – Subby

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; 
     } 
} 
Смежные вопросы