PropertyGrid не обновляется после изменения свойства
В моем проекте WPF я использую PropertyGrid. Я установил SelectedObject и данные правильно визуализируются.
Я также добавил следующее, чтобы позволить, если пользователь изменяет значение одного из свойств внутри SelectedObject, некоторые свойства будут скрыты, а другие показаны
PropertyDescriptorCollection pdcSld = TypeDescriptor.GetProperties(this.sld.GetType());
PropertyDescriptor descriptorF0 = pdcSld["f0Sld"];
PropertyDescriptor descriptortcStar = pdcSld["tcStarSSld"];
PropertyDescriptor descriptorGammaI = pdcSld["gammaI"];
PropertyDescriptor descriptorSpectrum = pdcSld["spectrum"];
if (descriptorF0 != null)
{
BrowsableAttribute attrib = (BrowsableAttribute)descriptorF0.Attributes[typeof(BrowsableAttribute)];
FieldInfo isBrow = attrib.GetType().GetField("browsable", BindingFlags.NonPublic | BindingFlags.Instance);
isBrow.SetValue(attrib, true);
}
if (descriptortcStar != null)
{
BrowsableAttribute attrib = (BrowsableAttribute)descriptortcStar.Attributes[typeof(BrowsableAttribute)];
FieldInfo isBrow =
attrib.GetType().GetField("browsable", BindingFlags.NonPublic | BindingFlags.Instance);
isBrow.SetValue(attrib, true);
}
if (descriptorGammaI != null)
{
BrowsableAttribute attrib = (BrowsableAttribute)descriptorGammaI.Attributes[typeof(BrowsableAttribute)];
FieldInfo isBrow =
attrib.GetType().GetField("browsable", BindingFlags.NonPublic | BindingFlags.Instance);
isBrow.SetValue(attrib, false);
}
if (descriptorSpectrum != null)
{
BrowsableAttribute attrib = (BrowsableAttribute)descriptorSpectrum.Attributes[typeof(BrowsableAttribute)];
FieldInfo isBrow =
attrib.GetType().GetField("browsable", BindingFlags.NonPublic | BindingFlags.Instance);
isBrow.SetValue(attrib, false);
}
Когда я открываю окно, в котором отображается PropertyGrid, все работает должным образом, то есть некоторые значения отображаются или скрываются в соответствии со значением определенного свойства.
Если пользователь изменяет это значение в PropertyGrid, вызывается код, но сетка не обновляется и остается такой, какой она была до изменения.
Я тоже пробовал с добавлением
[RefreshProperties(RefreshProperties.All)]
перед тем свойством, которое может повысить обновление сетки (изменить видимость), но это не работает.
Что мне не хватает?