Ваш DataGrid
имеет фиксированный Height
, поэтому он не может занимать оставшееся место в вашем окне. Более того, окружающий StackPanel
будет измерять своих дочерних элементов с положительной бесконечностью, что заставляет их увеличивать размер до наименьшего размера, который соответствует их содержимому, а это противоположно тому, что вы хотите.
У вас просто закреплена кнопка бар наверх. Последний элемент, это DataGrid
, по умолчанию заполнит оставшееся пространство в DockPanel
. Я удалил избыточные атрибуты, которые установлены по умолчанию в приведенном ниже коде.
<DockPanel>
<Menu DockPanel.Dock="Top" Background="Black" Foreground="White">
<MenuItem Header="_Data" Background="Black" Foreground="White">
<MenuItem Header="_Exit" Background="Black" Foreground="White" Click="App_Exit_Click"/>
</MenuItem>
<MenuItem Header="_Client" Background="Black" Foreground="White">
<MenuItem Header="_New" Background="Black" Foreground="White" Click="New_Client_Click"/>
</MenuItem>
</Menu>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
<Button x:Name="NewClient" Width="80" Height="80" Content="New" Foreground="White" Click="New_Client_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF141420" Offset="0"/>
<GradientStop Color="#FF203060" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
<Button x:Name="Sync" Width="80" Height="80" Content="Sync" Foreground="White" Click="New_Client_Click">
<Button.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF141420" Offset="0"/>
<GradientStop Color="#FF203060" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
</Button>
</StackPanel>
<DataGrid/>
</DockPanel>