我已经将itemsource绑定到Datagrid的Datatable。它显示了如何删除它的额外列我的代码:
<DataGrid Name="dataGrid" IsReadOnly="True" VerticalAlignment="Top" ItemsSource="{Binding Cus}" AutoGenerateColumns="True"/>
字符串它显示额外的列如何删除它?屏幕截图:
rxztt3cl1#
方案一:
为所有列设置AutoGenerateColumns="False"和Width="*"
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>
字符串
**解决方案二:**您可以这样设置,以达到您的要求
<DataGrid HorizontalAlignment="Left" Margin="50,0,0,0" Width="500" Name="dataGrid" IsReadOnly="True" VerticalAlignment="Top" ItemsSource="{Binding Cus}" AutoGeneratingColumn="AutoGeneratingColumn"/> void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); }
型
ygya80vv2#
您可以将HorizontalAlignment设置为Left。如here所述举例来说:
<DataGrid ItemsSource="{Binding}" HorizontalAlignment="Left"/>
xj3cbfub3#
一种避免的方法是将AutoGenerateColumns设置为False(XAML only approach)。提供您自己的列集合和set width for last column到*。
AutoGenerateColumns
False
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>
字符串将列的绑定替换为模型类中相应的属性。输出如下所示:
的数据但是,如果你想为所有列平均分配可用空间。你可以set width to * for all columns。输出将是这样的:
set width to * for all columns
的
mwkjh3gx4#
我为此争论了一段时间,Width="\*"解决了我的问题,而datagrid ColumnWidth="*"在我的情况下不工作。
Width="\*"
ColumnWidth="*"
vulvrdjw5#
如果您要:1.保持自动生成列=“True”,并且1.保持列的宽度自动调整为DataTable中的数据,而不是具有相同的宽度您只需要将“1*”设置为最后一列。请:1)将事件处理程序添加到.xaml2)将以下代码添加到.xaml.cs中
private void dataGrid_AutoGeneratedColumns(object sender, EventArgs e) { int i = ((DataGrid)sender).Columns.Count; DataGridColumn column = ((DataGrid)sender).Columns[i - 1]; column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); }
flseospp6#
在DataGrid对象中添加属性ColumnWidth="*”。
<Grid> <DataGrid x:Name="datagridname" Margin="10" ItemsSource="{Binding}" IsReadOnly="True" ColumnWidth="*"/> </Grid>
k75qkfdt7#
好吧,因为它的未使用的空间,另一种方法是使用加权宽度而不是固定宽度:
<DataGrid x:Name="dataGrid" IsReadOnly="True" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding OrderId}" Header="OrderId" Width="1*"/> <DataGridTextColumn Binding="{Binding ProductId}" Header="ProductId" Width="1*"/> <DataGridTextColumn Binding="{Binding UnitPrice}" Header="UnitPrice" Width="1*"/> <DataGridTextColumn Binding="{Binding Quantity}" Header="Quantity" Width="1*"/>
7条答案
按热度按时间rxztt3cl1#
方案一:
为所有列设置
AutoGenerateColumns="False"
和Width="*"
字符串
**解决方案二:**您可以这样设置,以达到您的要求
型
ygya80vv2#
您可以将HorizontalAlignment设置为Left。如here所述
举例来说:
字符串
xj3cbfub3#
一种避免的方法是将
AutoGenerateColumns
设置为False
(XAML only approach)。提供您自己的列集合和
set width for last column
到*
。字符串
将列的绑定替换为模型类中相应的属性。输出如下所示:
的数据
但是,如果你想为所有列平均分配可用空间。你可以
set width to * for all columns
。输出将是这样的:的
mwkjh3gx4#
我为此争论了一段时间,
Width="\*"
解决了我的问题,而datagridColumnWidth="*"
在我的情况下不工作。vulvrdjw5#
如果您要:
1.保持自动生成列=“True”,并且
1.保持列的宽度自动调整为DataTable中的数据,而不是具有相同的宽度
您只需要将“1*”设置为最后一列。请:
1)将事件处理程序添加到.xaml
2)将以下代码添加到.xaml.cs中
字符串
flseospp6#
在DataGrid对象中添加属性ColumnWidth="*”。
字符串
k75qkfdt7#
好吧,因为它的未使用的空间,另一种方法是使用加权宽度而不是固定宽度:
字符串