C# 在添加列时禁用DataGrid调整大小

C# 在添加列时禁用DataGrid调整大小,c#,wpf,datagrid,C#,Wpf,Datagrid,我的WPF表单中有一个具有多个列的datagrid。打开表单并将列添加到datagrid时,表单会自动调整为屏幕宽度 现在我知道发生这种情况是因为我在代码中将datagrid对齐设置为stretch,将列宽设置为*。但是这些需要设置,因为我希望datagrid在用户调整窗口大小时(而不是在窗口打开时)更改其大小和填充datagrid宽度的列 表格本身如下: <UserControl /*...*/ d:DesignHeight="590" d:DesignWidth="89

我的WPF表单中有一个具有多个列的datagrid。打开表单并将列添加到datagrid时,表单会自动调整为屏幕宽度

现在我知道发生这种情况是因为我在代码中将datagrid对齐设置为stretch,将列宽设置为*。但是这些需要设置,因为我希望datagrid在用户调整窗口大小时(而不是在窗口打开时)更改其大小和填充datagrid宽度的列

表格本身如下:

<UserControl
    /*...*/
    d:DesignHeight="590" d:DesignWidth="896">
    <Grid x:Name="Form" Loaded="Form_Loaded" MinWidth="896" MinHeight="590">
        <Label x:Name="label" Content="Label" HorizontalAlignment="Left" Margin="10,8,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.479,0.577" Height="27"/>
        <ComboBox x:Name="combo" HorizontalAlignment="Left" Margin="68,10,0,0" VerticalAlignment="Top" Width="200" SelectionChanged="combo_SelectionChanged" Height="23"/>
        <Button x:Name="buttonOne" Content="Button" HorizontalAlignment="Right" Margin="0,10,10,0" VerticalAlignment="Top" Width="75" Height="23"/>
        <TextBox x:Name="box" HorizontalAlignment="Right" Height="23" Margin="0,10,95,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="200"/>
        <DataGrid x:Name="view" HorizontalAlignment="Stretch" Margin="10,43" VerticalAlignment="Stretch" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" CanUserReorderColumns="False" SelectionMode="Single" IsReadOnly="True" ItemsSource="{Binding Path=List}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name}" Visibility="Visible"/>
                /*...*/
            </DataGrid.Columns>
        </DataGrid>
        <Button x:Name="buttonTwo" Content="Button" HorizontalAlignment="Right" Margin="0,0,10,10" DockPanel.Dock="Right" Width="75" Height="23" Click="buttonTwo_Click" VerticalAlignment="Bottom"/>
    </Grid>
</UserControl>
我尝试将datagrid放在一个单独的面板中,面板的宽度和高度是固定的。在添加列之后,我还更改了窗口大小,但这些解决方案都没有按计划工作


当打开窗口并添加列时,如何避免调整datagrid和窗口的大小(以便以后可以调整大小)?

若要解决此问题,必须在创建时使用以下代码行设置窗口的大小:

window.Width = 916;
window.Height = 633;
此外,还必须删除以下代码行,因为它在设置窗口的初始大小后调整了窗口的大小:

window.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;

感谢E Mett为我提供了解决方案。

您自己说DataGrid正在调整大小,因为您将其设置为“拉伸”。您希望发生什么?我希望添加列时datagrid不会拉伸。但我希望当用户调整窗口本身的大小时,它可以用列拉伸。当窗口打开时,窗口应小于屏幕的整个宽度。
window.SizeToContent = System.Windows.SizeToContent.WidthAndHeight;