Обратите внимание, что иногда у вас может быть StackPanel, не осознавая этого. В моем случае у меня был этот код
<ScrollViewer>
<ItemsControl ItemsSource="{Binding Pages}"/>
</ScrollViewer>
, который работал нормально. «Страницы», на которые ссылается привязка, были действительно разными, сложными пользовательскими элементами управления, и я хотел, чтобы на некоторых из них были только полосы прокрутки. Поэтому я удалил просмотрщик прокрутки:
<ItemsControl ItemsSource="{Binding Pages}"/>
А затем я поместил ScrollViewer в качестве верхнего элемента тех пользовательских элементов управления, где я их хотел. Однако это не сработало. Контент просто ушел со страницы. Сначала я не думал, что этот вопрос / ответ может мне помочь, но я понял, что по умолчанию ItemPanel ItemsControl является StackPanel. Поэтому я решил свою проблему, указав ItemsPanel, который не был StackPanel:
<ItemsControl ItemsSource="{Binding Pages}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>