Обычно это происходит потому, что значения измерений устанавливаются статически, а не динамически. Вот статический подход:
<RowDefinition x:Name="NavigatorRow" Height="120"/>
<RowDefinition x:Name="TaskPanelRow" Height="80"/>
Обе строки будут иметь фиксированную высоту, и они не будут изменять размер с окном.
Вот динамический подход:
<RowDefinition x:Name="NavigatorRow" Height="1*"/>
<RowDefinition x:Name="TaskPanelRow" Height="80"/>
Нижний ряд по-прежнему имеет фиксированную высоту 80, но верхний ряд будет расширяться, чтобы заполнить любое доступное пространство. Другими словами, строки изменят размеры с окном. Колонны работают так же.
Если бы у меня было три ряда, я мог бы сделать это:
<RowDefinition x:Name="NavigatorRow" Height="1*"/>
<RowDefinition x:Name="CalendarRow" Height="2*"/>
<RowDefinition x:Name="TaskPanelRow" Height="80"/>
Строка навигатора и строка календаря будут использовать доступное пространство, причем строка календаря будет в два раза больше высоты строки навигатора. Вы поняли идею.
Итак, вы используете не контейнер, а размер вашего контейнера. Единственное исключение, как отмечено выше, это StackPanel, который не масштабируется. Вместо этого используйте сетку, поскольку она масштабируется.