public override VisualElement CreatePropertyGUI(SerializedProperty property) { var field = new UIntField { label = property.displayName, value = (uint)property.longValue }; //Binding does not work on this custom UI Element field that we have created, so we need to use the change event field.RegisterValueChangedCallback(evt => { field.value = evt.newValue; property.longValue = evt.newValue; property.serializedObject.ApplyModifiedProperties(); }); // Create a surrogate integer field to detect and pass along external change events (non UI event) on the underlying serialized property. var surrogateField = new IntegerField(); field.Add(surrogateField); surrogateField.style.display = DisplayStyle.None; surrogateField.bindingPath = property.propertyPath; surrogateField.RegisterValueChangedCallback(evt => { evt.StopImmediatePropagation(); field.value = UIntField.ClampInput(property.longValue); }); return(field); }