防止WPF 4.0 Datagrid显示空列

16

alt text

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


2
你可能是想设置 Width="*" 吗? - vortexwolf
你想让该列占用所有可用的宽度,还是想隐藏“空列”? - Fredrik Hedblad
我希望该列占用所有可用的宽度。 - Kiang Teng
3个回答

16

正如Vorrtex在评论中所说,最好的做法可能是将列宽设置为填充所有可用空间:

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

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

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

希望这就是您在寻找的内容...


你的答案对我没用,我使用了以下DataGrid属性定义,这对我有效:RowHeaderWidth="0" - Eido95

3

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

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

那应该就可以了 :p

2

如果一个列的宽度是“*”,即使在数据网格右侧也会看到空列。为了解决这个问题,应该将数据网格的宽度指定为“Width=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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接