2015-09-02 3 views
0

У меня есть приложение для Windows Universal. У меня есть ScrollViewer, у которого есть кнопка наверху, ListBox и кнопка под списком ListBox (я знаю, что не очень хорошо иметь ListBox внутри ScrollViewer, но это не мой код, и я не могу изменить реализация). Вертикальный профиль ScrollViewer VerticalScrollMode и VerticalScrollBarVisibility установлены в значение false, поэтому невозможно выполнить прокрутку по вертикали (это также является обязательным требованием).Как исправить высоту экрана ScrollViewer/ListBox?

Когда ListBox содержит много элементов, высота списка становится больше, чем высота устройства. В результате часть ListBox и кнопки под списком недоступны (поскольку вертикальная прокрутка отключена).

<ScrollViewer> 
    <RelativeLayout> 
    ... 
    <Button name="Button1"> 
    ... 
    </Button> 
    <ListBox MinHeight="120"> 
    </ListBox> 
    <Button name="Button2"> 
    ... 
    </Button> 
    </RelativeLayout> 
</ScrollViewer> 

Есть ли способ исправить высоту экрана ScrollViewer, чтобы быть высотой экрана устройства? И установите высоту ListBox так, чтобы высота ListBox возрастала только для того, чтобы ListBox вписывался в пространство между Button1 и Button2?

ответ

1

Ваша проблема не в высоте scrollviewer. Это список, который расширяется для размещения его содержимого (как и должно быть). Ограничивая высоту списка, вы можете позаботиться об этом.

Вы можете использовать сетку с тремя рядами. Что-то вроде этого

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Button x:Name="ButtonTop" Grid.Row=0/> 
    <ListView x:Name="DontPutListViewInScrollViewer" Grid.Row=1/> 
    <Button x:Name="ButtonBottom" Grid.Row=2/> 
</Grid> 

Обратите внимание на высоту, определенную в среднем ряду. Это означает, что список будет занимать все пространство, доступное верхней и нижней строке.

Затем поместите эту сетку в ScrollViewer.

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