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)]

перед тем свойством, которое может повысить обновление сетки (изменить видимость), но это не работает.

Что мне не хватает?

0 ответов

Другие вопросы по тегам