Silverlight 3:Datagrid - 编辑单元格显示“未找到属性集方法”。信息

时间:2010-10-21 11:20:22

标签: silverlight datagrid silverlight-3.0

我有一个silverlight数据网格控件绑定到Dictionary<string, string>,其中autogenerate列设置为true。

AutoGeneratingColumn事件中,我根据需要更改列HeaderIsReadOnly属性(绑定到字典值的列可编辑)。

if ( string.Compare( e.Column.Header.ToString( ).ToLower( ), "key" ) == 0 )
            {
                e.Column.Header = "Property Name";
                e.Column.IsReadOnly = true;
            }
            else
            {
                e.Column.Header = "Property Value";
                e.Column.IsReadOnly = false;
            }

所有这一切都按预期工作,但是当我编辑一个单元格并跳出标签时,我在单元格旁边收到一条"Property set method not found."消息,之后它不允许我修改网格。

1 个答案:

答案 0 :(得分:1)

Dictionary<TKey, TValue>包含一组KeyValuePair<TKey, TValue> 结构。现在这就是问题所在,KeyValue属性是只读的,没有Set,即使正在编辑的内容不是同一个项目。字典,因为结构是值类型。

底线是您无法使用Dictionary修改DataGrid。您需要创建自己的类: -

public class PropertyItem
{
   public string Name { get; set; }
   public object Value { get; set; }
}

然后使用类似ObservableCollection<PropertyItem>的内容。