Если я правильно понял, что вы хотите сделать, вы можете сделать это, используя размер звездочки в вашей таблице. Размер звездочки указывает Grid использовать весь оставшийся доступный размер (делится пропорционально, если несколько строк / столбцов имеют размер звезды). Таким образом:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Margin="8,8,0,0" VerticalAlignment="Top" Height="225" Grid.Row="0">
<!-- first Expander here -->
</StackPanel>
<StackPanel Margin="0,0,0,8" VerticalAlignment="Bottom" Grid.Row="1">
<!-- second Expander here -->
</StackPanel>
</Grid>
Обратите внимание на прикрепленные свойства Grid.Row.
Теперь, когда вы устанавливаете видимость первой StackPanel на Collapsed, она не занимает высоту. Таким образом, в свою очередь, первый ряд Решетки падает до нулевой высоты. Таким образом, вся высота сетки посвящена второй строке, что означает, что вся высота сетки передается второй StackPanel и ее содержимому.
Это результат, к которому вы стремитесь? Возможно, я неправильно понял вопрос ... если это так, пожалуйста, оставьте комментарий, и я буду обновлять или удалять.