Silverlight 3: Datagrid - при редактировании ячейки отображается «Метод набора свойств не найден». сообщение - PullRequest
1 голос
/ 21 октября 2010

У меня есть элемент управления сетки данных silverlight, привязанный к Dictionary<string, string> с автоматически сгенерированными столбцами, установленными в 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." рядом с ячейкой, и это не позволяет мне изменять сетку после этого.

1 Ответ

1 голос
/ 21 октября 2010

A 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>.

...