В настоящее время я работаю над пользовательским интерфейсом для приложения WPF и хочу использовать ScrollViewer для отображения содержимого, которое может находиться за пределами области просмотра экрана.
За последние 2 дня я читал по всему Интернету, и из того, что я понимаю: ScrollViewer не знает высоты своего контента / родителя, если не определен статически; таким образом, если не будет записана конкретная высота (например, в случае с StackPanel, расположенной под ним), прокрутка не будет предусмотрена.
Теперь предположим, что моя иерархия пользовательского интерфейса выглядит следующим образом:
<Window> <!--No height here-->
<Grid>
<StackPanel Orientation="Horizontal"/>
<ContentControl>
<UserControl> <!--This user control doesn't have a specific height or width-->
<Grid>
<ScrollViewer>
<Grid /> <!--This grid doesn't contain any StackPanels, or containers with dynamic height, and this is content I want to show-->
</ScrollViewer>
<Grid />
</Grid>
</UserControl>
</ContentControl>
</Grid>
</Window>
Я ожидал, что ScrollViewer будет прокручиваться соответствующим образом, поскольку под ним нет динамического контейнера, но он этого не сделал, и оказалось, что установка статической высоты для него или для UserControl над ним заставляет его работать.
Но так как приложение будет работать на экранах разных размеров, а все окна каким-то образом могут изменять размер, я не хочу писать статические размеры.