C# 适合单元格内容的DataGrid列大小宽度

C# 适合单元格内容的DataGrid列大小宽度,c#,wpf,datagrid,C#,Wpf,Datagrid,我有这个XAML代码: <Window> <Grid Name="gridBase" Width="Auto" Height="Auto"> <DataGrid Grid.Row="1" DataContext="{StaticResource ItemCollectionViewSource}" ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserAddRows="False

我有这个XAML代码:

<Window>
    <Grid Name="gridBase" Width="Auto" Height="Auto">
        <DataGrid Grid.Row="1" DataContext="{StaticResource ItemCollectionViewSource}" ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserAddRows="False" Name="dgPatchContent" Margin="10, 20, 10, 10" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding SoftwareName}" Header="Software Name" />
                <DataGridCheckBoxColumn Binding="{Binding AssignmentStatus_Stopped, UpdateSourceTrigger=PropertyChanged}" Header="Stopped" MinWidth="55" CanUserResize="False" />
                <DataGridCheckBoxColumn Binding="{Binding AssignmentStatus_New, UpdateSourceTrigger=PropertyChanged}" Header="New"  MinWidth="55" CanUserResize="False" />
                <DataGridCheckBoxColumn Binding="{Binding AssignmentStatus_Pilot, UpdateSourceTrigger=PropertyChanged}" Header="Pilot"  MinWidth="55" CanUserResize="False" />
                <DataGridCheckBoxColumn Binding="{Binding AssignmentStatus_Productive, UpdateSourceTrigger=PropertyChanged}" Header="Prod"  MinWidth="55" CanUserResize="False" />
            </DataGrid.Columns>
        </DataGrid>

        <StackPanel HorizontalAlignment="Right" VerticalAlignment="Bottom" Grid.Row="2" Orientation="Horizontal">
            <Button Content="OK" MinWidth="80" Margin="10,10,10,10" />
            <Button Content="Cancel" MinWidth="80" Margin="0,10,10,10" />
        </StackPanel>
    </Grid>
</Window>

DataGrid中填充了包含一些虚拟值的对象,用于测试目的。SoftwareName列中的前几个条目具有相当短的字符串(~10个字符)。在底部,我添加了一个大字符串(~60个字符)

我想让单元格在应用程序启动时具有该列中最大字符串的宽度。当前,当我启动它时,宽度是在我的
DataGrid
中可见的最大字符串的大小。只有当我滚动到底部时,
DataGrid
和窗口的大小才调整为大的60char字符串的宽度

我曾经尝试过
Width=“SizeToContent”
或“
SizeToCells
”,但在应用程序启动后,似乎没有任何东西能使
数据网格具有正确的大小。有人能给我指一下正确的方向吗


谢谢你的帮助

那么,
DataGrid
默认情况下已启用,因此最初只创建可见的行对象,网格本身只知道当前可见的单元格大小:

当EnableRowVirtualization属性设置为true时,DataGrid 不为中的每个数据项实例化DataGridRow对象 绑定数据源。相反,DataGrid创建DataGridRow对象 只有在需要的时候


如果您的
DataGrid
不是一个大的,那么最简单的解决方案就是设置
EnableRowVirtualization=“False”
,然后从一开始就可以调整大小。

立即解决了问题!非常感谢你的解释。我不知道RowVirtualization。@sev,很高兴它有帮助,祝您编码愉快=)