将删除按钮添加到设置为AutoGenerateColumns的数据网格?

时间:2014-02-27 14:05:03

标签: c# wpf datagrid

我在WPF中有一个datagrid,它从数据库表中自动生成它的列:

SqlConnection sqlCon = connect2DB();
SqlDataAdapter adapter.SelectCommand = new SqlCommand("SELECT * FROM myTable", sqlCon);
adapter.Fill(dataSet);
dataGrid1.ItemsSource = dataSet.Tables[0].DefaultView;

这是我尝试将删除按钮添加到数据网格的地方:

<DataGrid AutoGenerateColumns="True" HName="dataGrid1" DataContext="{Binding}" ItemsSource="{Binding}" RowEditEnding="dataGrid1_RowEditEnding">
    <DataGridTemplateColumn Header="Actions" IsReadOnly="True">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button Content="Remove Row" Command="Delete"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid>

这不起作用,它说 {“Items集合在使用ItemsSource之前必须为空。”}

我也尝试了以下代码:

<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Src}" x:Name="Grid">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Junk"></DataGridCheckBoxColumn>
    </DataGrid.Columns>
</DataGrid>

哪个有效,但它没有生成按钮,据我所知,您只能生成复选框,文本框或超链接。如何生成按钮?

1 个答案:

答案 0 :(得分:2)

第一个例子应该有效,但你忘了DataGrid.Columns。它应该是:

<DataGrid ...>
    <DataGrid.Columns>
        <DataGridTemplateColumn ...>

没有WPF假定您正在创建项目