private void UpdateColorCategory(List <MemberCategory> categories) { var category = categories.FirstOrDefault(item => item.Name == "Rendering"); if (category != null) { string redVariableName; string greenVariableName; string blueVariableName; GetRedGreenBlueVarNames(out redVariableName, out greenVariableName, out blueVariableName); var redVar = category.Members.FirstOrDefault(item => item.Name == redVariableName); var greenVar = category.Members.FirstOrDefault(item => item.Name == greenVariableName); var blueVar = category.Members.FirstOrDefault(item => item.Name == blueVariableName); if (redVar != null && greenVar != null && blueVar != null) { InstanceMember instanceMember = new InstanceMember("Color", null); instanceMember.PreferredDisplayer = typeof(Gum.Controls.DataUi.ColorDisplay); instanceMember.CustomGetTypeEvent += (arg) => typeof(Microsoft.Xna.Framework.Color); instanceMember.CustomGetEvent += GetCurrentColor; instanceMember.CustomSetEvent += SetCurrentColor; // so color updates redVar.PropertyChanged += delegate { instanceMember.SimulateValueChanged(); }; greenVar.PropertyChanged += delegate { instanceMember.SimulateValueChanged(); }; blueVar.PropertyChanged += delegate { instanceMember.SimulateValueChanged(); }; category.Members.Add(instanceMember); } } }