void RefreshAttributeField(BindableElement fieldElement) { var styleRow = fieldElement.GetProperty(BuilderConstants.InspectorLinkedStyleRowVEPropertyName) as VisualElement; var attribute = fieldElement.GetProperty(BuilderConstants.InspectorLinkedAttributeDescriptionVEPropertyName) as UxmlAttributeDescription; var veType = currentVisualElement.GetType(); var csPropertyName = GetRemapAttributeNameToCSProperty(attribute.name); var fieldInfo = veType.GetProperty(csPropertyName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.IgnoreCase); object veValueAbstract = null; if (fieldInfo == null) { veValueAbstract = GetCustomValueAbstract(attribute.name); } else { veValueAbstract = fieldInfo.GetValue(currentVisualElement, null); } if (veValueAbstract == null) { if (currentVisualElement is EnumField defaultEnumField && attribute.name == "value") { if (defaultEnumField.type == null) { fieldElement.SetEnabled(false); } else { ((EnumField)fieldElement).PopulateDataFromType(defaultEnumField.type); fieldElement.SetEnabled(true); } } return; } var attributeType = attribute.GetType(); var vea = currentVisualElement.GetVisualElementAsset(); if (attribute is UxmlStringAttributeDescription && attribute.name == "value" && currentVisualElement is EnumField enumField && fieldElement is EnumField inputEnumField) { var hasValue = enumField.value != null; if (hasValue) { inputEnumField.Init(enumField.value, enumField.includeObsoleteValues); } else { inputEnumField.SetValueWithoutNotify(null); } inputEnumField.SetEnabled(hasValue); }