C# DataGrid添加可编辑行
我有一个datagrid,有两列,没有初始数据,我需要让用户能够添加他想要的列 我所做的是添加一个DataGrid、一个用于添加行的按钮和一个表示该行的类: Xaml: FilterItem.cs:C# DataGrid添加可编辑行,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个datagrid,有两列,没有初始数据,我需要让用户能够添加他想要的列 我所做的是添加一个DataGrid、一个用于添加行的按钮和一个表示该行的类: Xaml: FilterItem.cs: public class FilterItem { public string key { get; set; } public string value { get; set; } } 问题是添加的行不可编辑,双击单元格会引发异常: 此视图不允许使用“EditItem”。(未处理
public class FilterItem
{
public string key { get; set; }
public string value { get; set; }
}
问题是添加的行不可编辑,双击单元格会引发异常:
此视图不允许使用“EditItem”。(未处理InvalidOperationException)
我做错了什么?我想这是因为访问集合对象的属性是只读的。有关信息,请参见此处: 我将为以下项目创建一个商店:
private ObservableCollection<FilterItem> _data = new ObservableCollection<FilterItem>();
public ObservableCollection<FilterItem> Data
{
get { return _data; }
}
最后是你的按钮:
_data.Add(new FilterItem());
这样,您就可以在窗口中创建一个存储,并将DataGrid绑定到此存储。每次更改项目集合时,DataGrid
都会显示新值,您可以更改项目
我建议为您的FilterItem实现INotifyPropertyChanged。这样,每次更改项目时,都会通知DataGrid
private ObservableCollection<FilterItem> _data = new ObservableCollection<FilterItem>();
public ObservableCollection<FilterItem> Data
{
get { return _data; }
}
<DataGrid ... ItemsSource="{Binding Data, ElementName=window}">
_data.Add(new FilterItem());