Панели внутри ScrollViewer - PullRequest
       0

Панели внутри ScrollViewer

0 голосов
/ 26 октября 2011

В моем приложении wpf появилась интересная проблема.

Я работаю с mvvm, и элементы создаются в элементе управления контентом, который привязан к модели представления.

Например:

<Shell> 
   <ScrollViewer>
    <StackPanel>
        <ContentControl Content="{Bidning SomeVM}"/>
        <ContentControl Content="{Bidning SomeVM2}"/>
        <ContentControl Content="{Bidning SomeVM3}"/>
    </StackPanel>
   </ScrollViewer>

</Shell>

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

Представления содержат GroupBox и сетку данных, если это важно.

Так это моя проблема, есть предложения?

1 Ответ

1 голос
/ 27 октября 2011

StackPanel собирается измерить своих детей с бесконечностью в направлении ориентации, которая по умолчанию является вертикальной. Таким образом, ваши предметы будут измеряться с бесконечной высотой, что, по сути, означает, что они будут соответствовать размеру контента - например, DataGrid будет распределять, измерять и упорядочивать записи для каждого элемента в списке (при условии, что на элемент управления не было наложено никаких ограничений). Также обратите внимание, что в результате они не будут виртуализироваться, поскольку это зависит от измерения с определенным ограничением.

Обратите внимание, что даже если вы использовали другую панель, вы можете получить такое поведение, поскольку ScrollContentPresenter в ScrollViewer будет измерять его дочерние элементы с бесконечностью, если он выполняет прокрутку - что произойдет, если CanContentScroll установлено в false или если ItemsPanel не реализует IScrollInfo.

Я не уверен, какой тип макета вы хотите получить, поэтому трудно дать какие-либо конкретные рекомендации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...