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