使WPF DataGrid列可编辑

时间:2016-06-24 07:15:27

标签: c# wpf xaml datagrid

我需要让我的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;
    }
}

有什么问题?如何使我的第二列可编辑?

2 个答案:

答案 0 :(得分:2)

如果绑定到字典,它会将内容枚举为KeyValuePair个实例,这是一个结构。您不能编辑保持相同实例的结构的成员(在这种情况下属性是get-only)。

改为绑定到类实例列表。

答案 1 :(得分:0)

DataGrid与集合一起使用,Dictioanry是KeyValuePair的集合。如果你看一下这个结构,你会发现它不可变。