У меня была та же проблема, но привязка к высоте окна не полностью решила эту проблему для меня.В моем случае DataGrid все еще расширялся на 2 - 3 дюйма ниже видимой области окна.Я полагаю, что это произошло потому, что моя DataGrid начиналась на 2–3 дюйма ниже верхней части окна.
В конце концов я обнаружил, что нет необходимости связывать высоту DataGrid вообще.Все, что мне нужно было сделать, это изменить прямой контейнер DataGrid.
Для меня следующая настройка XAML заставляет DataGrid расширяться за пределы размера окна, когда добавляется достаточное количество строк.Обратите внимание, что DataGrid находится внутри StackPanel.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="75"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<!-- StackPanel Content accounting for about 2-3 inches of space -->
</StackPanel>
<!-- DataGrid within a StackPanel extends past the vertical space of the Window
and does not display vertical scroll bars. Even if I bind the height to Window
height the DataGrid content still extends 2-3 inches past the viewable Window area-->
<StackPanel Grid.Row="1">
<DataGrid ItemsSource="{StaticResource ImportedTransactionList}"
Margin="10,20,10,10" MinHeight="100">
</DataGrid>
</StackPanel>
</Grid>
Однако простое удаление StackPanel устранило проблему для меня.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="75"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<!-- StackPanel Content accounting for about 2-3 inches of space -->
</StackPanel>
<!-- Removing the StackPanel fixes the issue-->
<DataGrid Grid.Row="1" ItemsSource="{StaticResource SomeStaticResource}"
Margin="10,20,10,10" MinHeight="100">
</DataGrid>
</Grid>
Поскольку оригинальный пост довольно старый, я должен отметить, что я использую VS2017 и .Net Framework 4.6.1, но я не уверен, имеет ли это какое-либо отношение.