Wpf DataGridView中的双列

时间:2015-03-02 01:20:40

标签: c# wpf datagridview

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

我成功绑定它,但问题是,我想将列绑定为Rowheader。这一栏现在是双倍的。

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”列是普通列和行标题列。

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

1 个答案:

答案 0 :(得分:1)

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

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

在我的公司,我们已经对datagrid类进行了子类化并覆盖了OnautoGeneratingColumn函数。我们添加了一个csv列名列表的Dependancy属性,可以跳过可以在xaml中设置的列。在OnautoGeneratingColumn中,我们会检查要跳过的列列表。