DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。

Posted

技术标签:

【中文标题】DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。【英文标题】:DataGridTemplateColumn : Items collection must be empty before using ItemsSource. 【发布时间】:2011-10-16 11:22:48 【问题描述】:

为什么是错误代码:

        <dg:DataGrid  Name="dataGrid" AutoGenerateColumns="False"                                  
                HeadersVisibility="Column" SelectedIndex="-1" Margin="0,315,0,0" Background="#FF484040" BorderBrush="#FF484040">
        <dg:DataGrid.Columns>
            <dg:DataGridTextColumn Binding="Binding IdBook" Header="IdBook"></dg:DataGridTextColumn>
            <dg:DataGridTextColumn Binding="Binding NameBook" Header="NameBook"></dg:DataGridTextColumn>
            <dg:DataGridTextColumn Binding="Binding Author" Header="Author"></dg:DataGridTextColumn>
        </dg:DataGrid.Columns>

        <dg:DataGridTemplateColumn Header="Delete">

            <dg:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Style="DynamicResource GlassButton" Background="DynamicResource DeleteButton">

                    </Button>
                </DataTemplate>
            </dg:DataGridTemplateColumn.CellTemplate>

            </dg:DataGridTemplateColumn>
    </dg:DataGrid>

以下代码是正确的:

        <dg:DataGrid  Name="dataGrid" AutoGenerateColumns="False"                                  
                HeadersVisibility="Column" SelectedIndex="-1" Margin="0,315,0,0" Background="#FF484040" BorderBrush="#FF484040">
        <dg:DataGrid.Columns>
            <dg:DataGridTextColumn Binding="Binding IdBook" Header="IdBook"></dg:DataGridTextColumn>
            <dg:DataGridTextColumn Binding="Binding NameBook" Header="NameBook"></dg:DataGridTextColumn>
            <dg:DataGridTextColumn Binding="Binding Author" Header="Author"></dg:DataGridTextColumn>
        </dg:DataGrid.Columns>

    </dg:DataGrid>

但我不能将按钮添加到数据网格

【问题讨论】:

【参考方案1】:

将模板列保留在 DataGrid.Columns 中。

     <dg:DataGrid  Name="dataGrid" AutoGenerateColumns="False"                                  
            HeadersVisibility="Column" SelectedIndex="-1" Margin="0,315,0,0" Background="#FF484040" BorderBrush="#FF484040">
    <dg:DataGrid.Columns>
        <dg:DataGridTextColumn Binding="Binding IdBook" Header="IdBook"></dg:DataGridTextColumn>
        <dg:DataGridTextColumn Binding="Binding NameBook" Header="NameBook"></dg:DataGridTextColumn>
        <dg:DataGridTextColumn Binding="Binding Author" Header="Author"></dg:DataGridTextColumn>
       <dg:DataGridTemplateColumn Header="Delete">
             <dg:DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                       <Button Style="DynamicResource GlassButton" Background="DynamicResource DeleteButton">
                         </Button>
            </DataTemplate>
        </dg:DataGridTemplateColumn.CellTemplate>
        </dg:DataGridTemplateColumn>
    </dg:DataGrid.Columns>
  </<dg:DataGrid>

【讨论】:

噢!也忘记了 DataGrid.Columns。

以上是关于DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。的主要内容,如果未能解决你的问题,请参考以下文章

DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。

DataGridTemplateColumn 绑定在 WPF 中使用文本框和 MVVM

如何在 DataGridTemplateColumn 内的控件上双向绑定属性?

通过 C# 代码创建 DataGridTemplateColumn

如何从 DataGridTemplateColumn.CellTemplate 访问按钮

DataGridTemplateColumn 上边距/填充