我已将itemsource绑定到Datatable for Datagrid.它显示了如何删除它的额外列
我的代码:
<DataGrid Name="dataGrid" IsReadOnly="True" VerticalAlignment="Top"
ItemsSource="{Binding Cus}" AutoGenerateColumns="True"/>
Run Code Online (Sandbox Code Playgroud)
它显示额外的列如何删除它?
截屏:

Roh*_*ats 19
要避免的一种方法是设置AutoGenerateColumns为False(仅限XAML方法).
提供自己列的和收集set width for last column到*.
<DataGrid x:Name="dataGrid" IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding OrderId}" Header="OrderId"/>
<DataGridTextColumn Binding="{Binding ProductId}" Header="ProductId"/>
<DataGridTextColumn Binding="{Binding UnitPrice}" Header="UnitPrice"/>
<DataGridTextColumn Binding="{Binding Quantity}" Header="Quantity"/>
<DataGridTextColumn Binding="{Binding Discount}" Header="Discount"
Width="*"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
将列的绑定替换为模型类中的相应属性.输出将是这样的:

但是,如果要为所有列平均分配可用空间.你可以set width to * for all columns.输出将是这样的:

Rag*_*van 19
解决方案1:
为所有列设置AutoGenerateColumns ="False"和Width ="*"
<DataGrid x:Name="dataGrid" IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding OrderId}" Header="OrderId" Width="*"/>
<DataGridTextColumn Binding="{Binding ProductId}" Width="*" Header="ProductId"/>
<DataGridTextColumn Binding="{Binding UnitPrice}" Width="*" Header="UnitPrice"/>
<DataGridTextColumn Binding="{Binding Quantity}" Width="*" Header="Quantity"/>
<DataGridTextColumn Binding="{Binding Discount}" Header="Discount"
Width="*"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
解决方案2: 您可以这样设置以满足您的要求
<DataGrid HorizontalAlignment="Left" Margin="50,0,0,0" Width="500"
Name="dataGrid" IsReadOnly="True" VerticalAlignment="Top"
ItemsSource="{Binding Cus}" AutoGenerateColumns="True"/>
this.dataGrid.AutoGeneratingColumn += dataGrid_AutoGeneratingColumn;
void dataGrid_AutoGeneratingColumn(object sender,
DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
}
Run Code Online (Sandbox Code Playgroud)
小智 16
您可以将HorizontalAlignment设置为Left.如上所述这里
例如:
<DataGrid ItemsSource="{Binding}" HorizontalAlignment="Left"/>
Run Code Online (Sandbox Code Playgroud)