我需要让我的DataGrid列可编辑,但无法弄清楚如何制作它。 当我尝试编辑列时,我捕获一个异常“此视图不允许使用EditItem”。
我的XAML:
<DataGrid IsReadOnly="False" AutoGenerateColumns="False" Margin="6,6,5,18" Name="dataGrid1" ItemsSource="{Binding MyDictionary}" CellEditEnding="dataGrid1_editCells">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding Key}" />
<DataGridTextColumn IsReadOnly="False" Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
</DataGrid>
和.cs:
public partial class MyView : Window
{
private Dictionary<string, string> myDictionary = new Dictionary<string, string>();
public Dictionary<string, string> Dictionary { get { return myDictionary ; } set { myDictionary = value; } }
public MyView()
{
// Here is some code that fills dictionary
InitializeComponent();
this.DataContext = this;
}
}
有什么问题?如何使我的第二列可编辑?
答案 0 :(得分:2)
如果绑定到字典,它会将内容枚举为KeyValuePair
个实例,这是一个结构。您不能编辑保持相同实例的结构的成员(在这种情况下属性是get-only)。
改为绑定到类实例列表。
答案 1 :(得分:0)
DataGrid与集合一起使用,Dictioanry是KeyValuePair的集合。如果你看一下这个结构,你会发现它不可变。