阻止WPF 4.0 Datagrid显示空列

时间:2011-01-07 16:52:41

标签: c# .net wpf xaml datagrid

alt text

我有一个带有1列数据网格的应用程序(现在)。如何从数据网格中删除第二个空列,以便只在数据网格中显示包含数据的列。

3 个答案:

答案 0 :(得分:15)

正如vorrtex在评论中所说,最好的办法是设置列宽以填充所有可用空间:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Header="FishLine ID" Width="*"/>
    </DataGrid.Columns>
    ...
</DataGrid>

根据您使用的容器,您还可以将网格对齐到左侧,在其右侧留下空白区域:

<DataGrid HorizontalAlignment="Left">
    <DataGrid.Columns>
        <DataGridTextColumn Header="FishLine ID"/>
    </DataGrid.Columns>
    ...
</DataGrid>

希望这就是你要找的......

答案 1 :(得分:3)

我认为您需要将AutoGenerateColumns设置为False,并执行以下操作:

<DataGrid AutoGenerateColumns = "False" ItemsSource = "{Binding BindSource}">
    <DataGrid.Columns>
        <DataGridTextColumn Header = "FishLine ID" Binding = "{Binding ID}" Width="*"/>
    </DataGrid.Columns>
</DataGrid>

应该这样做:p

答案 2 :(得分:1)

如果一列的宽度为“*”,那么我在datagrid的右边看到了空列。要解决此问题,请将datagrid的宽度指定为“宽度= 500”而不是MinWidth和MaxWidth。

<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="500" MinHeight="180" CanUserAddRows="False" CanUserDeleteRows="false" ItemsSource="{Binding MyList}" SelectedItem="{Binding SelectedValue}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Start Date" Binding="{Binding StartDate}" IsReadOnly="True" MinWidth="60" Width="Auto"/>
        <DataGridTextColumn Header="End Date" Binding="{Binding EndDate}" IsReadOnly="True" MinWidth="60" Width="*"/>
    </DataGrid.Columns>
</DataGrid>