我有一个silverlight数据网格控件绑定到Dictionary<string, string>
,其中autogenerate列设置为true。
在AutoGeneratingColumn
事件中,我根据需要更改列Header
和IsReadOnly
属性(绑定到字典值的列可编辑)。
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."
消息,之后它不允许我修改网格。
答案 0 :(得分:1)
Dictionary<TKey, TValue>
包含一组KeyValuePair<TKey, TValue>
结构。现在这就是问题所在,Key
和Value
属性是只读的,没有Set
,即使正在编辑的内容不是同一个项目。字典,因为结构是值类型。
底线是您无法使用Dictionary
修改DataGrid
。您需要创建自己的类: -
public class PropertyItem
{
public string Name { get; set; }
public object Value { get; set; }
}
然后使用类似ObservableCollection<PropertyItem>
的内容。