DataGridView 中的 wpf 双列

wpf Double Column in DataGridView

我想使用 wpf 在 c# 中的数据网格视图上绑定数据 table。

我绑定成功了,但问题是,我想将列绑定为行header。此列现在是双列。

sda.Fill(dt);
            if (isPaddock)
            {
                dt.Columns["Paddock1"].ColumnName = "Paddock 1";
                dt.Columns["Paddock2"].ColumnName = "Paddock 2";
                dt.Columns["Paddock3"].ColumnName = "Paddock 3";
                dt.Columns["Paddock4"].ColumnName = "Paddock 4";
                dt.Columns["Paddock5"].ColumnName = "Paddock 5";
            }
            buchungDataGrid.ItemsSource = dt.DefaultView;

 <DataGrid Background="LightGray" RowBackground="LightYellow" MouseLeftButtonUp="buchungDataGrid_MouseLeftButtonUp" AlternatingRowBackground="LightBlue" x:Name="buchungDataGrid" RowHeight="70" CanUserReorderColumns="False" FontSize="20" Margin="20,20,0,0" CanUserResizeColumns="False" Grid.Row="1" IsReadOnly="True" ColumnWidth="*" FrozenColumnCount="1" CanUserSortColumns="False" SelectionUnit="Cell" ClipboardCopyMode="None" EnableRowVirtualization="False" SelectionMode="Single">
        <DataGrid.RowHeaderStyle>
            <Style TargetType="DataGridRowHeader">
                <Setter Property= "Content"  Value="{Binding Uhrzeit}"/>
            </Style>
        </DataGrid.RowHeaderStyle>

但结果是 "Uhrzeit" 列是普通列,而行 header 列。

我试图删除该列,使其不可见,但我不明白它是如何工作的。

除非您将 AutoGenerateColumns 设置为 false,否则数据网格将自动生成所有列,但这意味着您需要明确指定每一列。

或者,您可以附加到 AutoGeneratingColumn 事件并在其中放置逻辑以阻止包含特定列。

在我的公司,我们已经子class编辑数据网格 class 并覆盖 OnautoGeneratingColumn 函数。我们添加了要跳过的 csv 列名列表的依赖项 属性,可以在 xaml 中设置。在 OnautoGeneratingColumn 中,我们检查要跳过的列列表。