private void BuildControl(KeyValuePair <string, Engine.Effects.VisualPropertyItem> key) { Engine.Effects.VisualPropertyItem pi = key.Value; PaintualUI.Controls.PropertyPage.TPropertyControl ctrl = null; switch (pi.DisplayControlType) { case Engine.Attributes.Meta.DisplayControlTypes.Textbox: switch (pi.DataType) { case Engine.PropertyDataTypes.Int: ctrl = BuildPropertyIntBox(pi); break; case Engine.PropertyDataTypes.Double: ctrl = BuildPropertyDoubleBox(pi); break; case Engine.PropertyDataTypes.Text: ctrl = BuildPropertyTextBox(pi); break; default: throw new Exception(); } break; case Engine.Attributes.Meta.DisplayControlTypes.ColorVariance: ctrl = BuildPropertyObject(pi); break; case Engine.Attributes.Meta.DisplayControlTypes.RadioButtons: ctrl = BuildPropertyRadioButtons(pi); break; case Engine.Attributes.Meta.DisplayControlTypes.FolderSelector: ctrl = BuildPropertyFolderSelector(pi); break; case Engine.Attributes.Meta.DisplayControlTypes.Checkbox: ctrl = BuildPropertyCheckBox(pi); break; default: throw new ArgumentException(String.Format("Either the control type is set to 'None' or the type \"{0}\" is not supported in the VisualBuilder", pi.DisplayControlType.ToString())); } FlowPanelContainer.Children.Add(ctrl); // since getting control by name seems not to work, can retrieve later by index from pi instance. pi.Index = FlowPanelContainer.Children.Count - 1; }
private void UpdateControlVisuals() { foreach (UIElement uie in FlowPanelContainer.Children) { PaintualUI.Controls.PropertyPage.TPropertyControl tpc = (PaintualUI.Controls.PropertyPage.TPropertyControl)uie; if (tpc != null) { tpc.UpdateVisual(); } } }