StackPanel предназначен для получения размеров от его элементов и контейнера (в зависимости от его ориентации), хотя то, что вы сделали, выглядит правильно, это не то, как StackPanel «предназначен» для использования. Хотя это выглядит так, как будто это установленная высота, его фактическая высота (которую он использует для размещения дочерних элементов управления) - это размер его содержимого (кнопка). StackPanel имеет свое применение, но если вы делаете что-то, кроме простого стека элементов управления, то вам, как правило, следует использовать что-то еще.
Вы можете исправить это, прикрепив сетку размера внутрь:
<StackPanel Width="300" Height="50" Background="Red">
<Grid Height="50">
<Button Name="Switch" Content="Switch Page" Width="100" Height="20"
HorizontalAlignment="Right" VerticalAlignment="Bottom"
/>
</Grid>
</StackPanel>
Или, для этого конкретного макета, вы можете посмотреть на DockPanel, который будет вести себя так, как вы ожидаете.