【问题标题】:Remove the blank column in a WPF DataGrid删除 WPF DataGrid 中的空白列
【发布时间】:2013-08-15 10:07:35
【问题描述】:

我使用 DataSet 在 WPF (C#) 中填充 DataGrid。结果是:

我想删除左侧的空白列。我想将剩余空间共享给列。预期结果是:

我的 XAML 代码是:

<Window x:Class="RFID.CareerWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="CareerWindow" Height="356" Width="404">
    <Grid>

        <DataGrid x:Name="dg1" HorizontalAlignment="Left" Margin="25,10,0,0" VerticalAlignment="Top" Height="306" Width="355" EnableRowVirtualization="false" EnableColumnVirtualization="false" FontFamily="2  badr" FontSize="20" FlowDirection="RightToLeft" CanUserAddRows="False" CanUserReorderColumns="False"/>

    </Grid>
</Window>

【问题讨论】:

    标签: .net wpf xaml datagrid


    【解决方案1】:

    避免设置静态的高度和宽度。

    使用ColumnWidth="*" 共享DataGridColumns 之间的空间

    <DataGrid x:Name="dg1" ColumnWidth="*"
              HorizontalAlignment="Left" VerticalAlignment="Top" Margin="25,10,0,0"
              EnableRowVirtualization="false" EnableColumnVirtualization="false" 
              FontFamily="2  badr" FontSize="20" FlowDirection="RightToLeft" 
              CanUserAddRows="False" CanUserReorderColumns="False" />
    

    【讨论】:

    【解决方案2】:

    您可以使用

    设置Grid 的最后一列或一列
    <DataGridTextColumn Header="Surname"
                        Width="*"
                        Binding="{Binding Path=Surname,Mode=TwoWay}" IsReadOnly="True">
      <DataGridTextColumn.ElementStyle>
        <Style TargetType="TextBlock">
          <Setter Property="HorizontalAlignment" Value="Left" />
          <Setter Property="VerticalAlignment" Value="Center" />
        </Style>
      </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>
    

    【讨论】: