我已将itemsource绑定到Datatable for Datagrid.它显示了如何删除它的额外列
我的代码:
它显示额外的列如何删除它?
截屏:
您可以将HorizontalAlignment设置为Left.如上所述这里
例如:
<DataGrid ItemsSource="{Binding}" HorizontalAlignment="Left"/>
解决方案1:
为所有列设置AutoGenerateColumns ="False"和Width ="*"
<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" /> </DataGrid.Columns> </DataGrid>
解决方案2: 您可以这样设置以满足您的要求
<DataGrid HorizontalAlignment="Left" Margin="50,0,0,0" 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); }
要避免的一种方法是设置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" /> </DataGrid.Columns> </DataGrid>
将列的绑定替换为模型类中的相应属性.输出将是这样的:
但是,如果要为所有列平均分配可用空间.你可以set width to * for all columns
.输出将是这样的: