我想使用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”列是普通列和行标题列。
我试图删除该列,使其不可见,但我不知道它是如何工作的。
答案 0 :(得分:1)
除非您将AutoGenerateColumns
设置为false,否则datagrid将自动生成所有列,但这意味着您需要明确指定每列。
或者,您可以附加到AutoGeneratingColumn
事件并在其中放置逻辑以阻止包含特定列。
在我的公司,我们已经对datagrid类进行了子类化并覆盖了OnautoGeneratingColumn
函数。我们添加了一个csv列名列表的Dependancy属性,可以跳过可以在xaml中设置的列。在OnautoGeneratingColumn
中,我们会检查要跳过的列列表。