Растянуть DataGrid до StackPanel

Мне необходимо растянуть DataGrid на всё незанятое пространство до StackPanel. В StackPanel будут храниться различные кнопки. Пытался растянуть ячейки при помощи команды Width="*" в DataGridTextColumn, но тогда DataGrid вытесняет элементы за экран, без этой команды не получается растянуть на всё не занятое пространство

<Grid>

        <DockPanel LastChildFill="True">

            <DataGrid x:Name="AddressesGrid" DockPanel.Dock="Left" AutoGenerateColumns="True" Margin="5" IsReadOnly="True" Background="#FFC88F8F">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Имя PC" Binding="{Binding Name_PC}"/>
                    <DataGridTextColumn Header="IP адресс" Binding="{Binding IP_Address}" />
                    <DataGridTextColumn Header="Mac адресс"  Binding="{Binding MAC_Address}" />
            </DataGrid.Columns>

            </DataGrid>
            
            <StackPanel DockPanel.Dock="Right" Width="130" Margin="5" Background="#7F4B5977" HorizontalAlignment="Right" >
                <Button x:Name="button1" Width="110" Height="30" Click="Button_Test" 
                    Background="White" Content="Test" />
            </StackPanel>
        </DockPanel>

    </Grid>

Без Width="*" в DataGridTextColumn

Без команды

С Width="*" в DataGridTextColumn

С командой


Ответы (1 шт):

Автор решения: aepot

Grid - это не просто панель, это сетка, у которой могут быть колонки и строки, можно легко создать 2 колонки. Правая по содержимому шириной, а левая на все остальное пространство. DockPanel здесь вообще не в тему.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <DataGrid x:Name="AddressesGrid" AutoGenerateColumns="True" Margin="5" IsReadOnly="True" Background="#FFC88F8F">
        <DataGrid.Columns>
            <DataGridTextColumn Width="*" Header="Имя PC" Binding="{Binding Name_PC}"/>
            <DataGridTextColumn Width="*" Header="IP адресс" Binding="{Binding IP_Address}" />
            <DataGridTextColumn Width="*" Header="Mac адресс"  Binding="{Binding MAC_Address}" />
        </DataGrid.Columns>
    </DataGrid>
            
    <StackPanel Grid.Column="1" Width="130" Margin="5" Background="#7F4B5977" HorizontalAlignment="Right" >
        <Button x:Name="button1" Width="110" Height="30" Click="Button_Test" Background="White" Content="Test" />
    </StackPanel>
</Grid>
→ Ссылка