2015-01-25 3 views
0

Я сражаюсь с ScrollViewer внутри StackPanel. ScrollViewer показывает только одну полосу прокрутки в зависимости от ориентации StackPanel, что я понимаю, поскольку StackPanel считает неограниченным в этом направлении. Поэтому я попытался ограничить размер ScrollViewer, привязывая его к ширине и высоте StackPanel. Когда приложение отображается, оно показывает обе полосы прокрутки, но они не изменяются правильно. Что не так или как я должен это делать.ScrollViewer внутри (Stack-) Panel

(Примечание:.. Я знаю, что могу использовать сетку вместо StackPanel и ScrollViewer ведет себя, как и ожидалось, однако, как только я помещаю что сетки в StackPanel проблема появляется снова)

<Window x:Class="tt_WPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="500" Width="500"> 
<StackPanel x:Name="sp" Orientation="Horizontal"> 
    <ScrollViewer 
     HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" 
     Width="{Binding ElementName=sp, Path=ActualWidth}" 
     Height="{Binding ElementName=sp, Path=ActualHeight}"> 
     <Button Background="LightCoral" Width="500" Height="500">Hey</Button> 
    </ScrollViewer> 
</StackPanel> 

+0

Почему бы вам не использовать сетку? Какое специальное свойство StackPanel вам нужно? – nvoigt

+0

Я хочу иметь элемент управления (который включает ScrollViewer и), который я могу использовать в разных местах, в том числе в StackPanel. –

+0

Вы действительно должны использовать другой тип панели. StackPanel пытается минимизировать собственный размер. Вы хотите, чтобы ваш элемент заполнил панель. Не сражайтесь с StackPanel, выберите панель, которая действительно делает то, что вы хотите. Может быть, DockPanel. – nvoigt

ответ

2

Прокрутка просмотра бесполезно внутри вертикальной StackPanel. Вертикальный StackPanel имеет высоту, установленную на бесконечность, поэтому ScrollViewer имеет все размеры, которые он хочет, и никогда не будет показывать полосу прокрутки. Вы должны переключиться на Grid или DockPanel.

-1

У меня была такая же проблема, я решил ее, переключив stackpanel и scrollviewer.

+0

Я знаю это, но я хочу иметь элемент управления, который я могу использовать в StackPanel. –

Смежные вопросы