Это часть моего класса AOI (ничего особенного в этом нет):
class AOI : INotifyPropertyChanged
{
private Guid _id;
private string _name;
private string _comment;
public Guid Id
{
get { return _id; }
}
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public string Comment
{
get { return _comment; }
set
{
_comment = value;
OnPropertyChanged("Comment");
}
}
public override string ToString()
{
if (_name.Length > 0)
{
return _name;
}
else
{
return _id.ToString();
}
}
}
Я храню их в BindingList<AOI>
, который связан с ListBox
. В событии SelectedValueChanged
ListBox
я назначаю выбранный объект PropertyGrid
, чтобы пользователь мог изменить AOI
.
Это работает нормально, за исключением поля Имя (которое отображается в ListBox
(см. ToString()
выше)).
Когда я редактирую поле имени с помощью PropertyGrid
, ListBox
обновляется правильно. Но в PropertyGrid,
поле Name
(только значение) очищается, как только я нажимаю клавишу ввода. Правильное (измененное) значение появляется, когда я устанавливаю курсор на другое поле в PropertyGrid
.
Какой самый простой способ решить эту проблему правильно?