DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。
Posted
技术标签:
【中文标题】DataGridTemplateColumn :在使用 ItemsSource 之前,Items 集合必须为空。【英文标题】:DataGridTemplateColumn : Items collection must be empty before using ItemsSource. 【发布时间】:2021-07-19 15:32:53 【问题描述】:为什么是错误代码:
<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