private void ElementTypeComboBoxOnOnFormEvent(object sender, FormElementEvent e) { var oldElement = FormElement; if (!(e is SelectElementChangedEvent eventArgs)) { return; } if (ElementTypeToFriendlyName(FormElement?.Model.GetType()) == eventArgs.NewValue) { return; } IControlElementViewModel newElementViewModel = null; switch (eventArgs.NewValue) { case "Button": newElementViewModel = new ButtonElementViewModel(new ButtonElementBuilder().FromTemplate(oldElement.Model) .Build()); break; case "Html": newElementViewModel = new HtmlElementViewModel(new HtmlElementBuilder().FromTemplate(oldElement.Model) .Build()); break; case "CheckBox": newElementViewModel = new CheckElementViewModel(new CheckElementBuilder().FromTemplate(oldElement.Model) .Build()); break; case "TextBox": newElementViewModel = new TextElementViewModel(new TextElementBuilder().FromTemplate(oldElement.Model) .Build()); break; case "ComboBox": newElementViewModel = new SelectElementViewModel(new SelectElementBuilder().FromTemplate(oldElement.Model) .Build()); break; } var elementIndex = ParentElement.Children.IndexOf(oldElement); ParentElement.Children.RemoveAt(elementIndex); ParentElement.Children.Insert(elementIndex, newElementViewModel); FormElement = newElementViewModel; }
private void AddCheckBoxConfigurationRows(ICompositeElementViewModel group, ICheckElementViewModel element) { var textField = new TextElementViewModel( new TextElementBuilder() .SetName("contentTextField") .SetLabel(ElementLabel.Left("Default Content")) .SetDefaultValue(element.Content).Build()); var checkedField = new CheckElementViewModel( new CheckElementBuilder() .SetName("checkbox") .SetLabel(ElementLabel.Left("Default Value")) .SetDefaultValue(element.DefaultIsChecked) .SetContent(element.Content).Build()); textField.OnFormEvent += (s, e) => { if (e is TextElementChangedEvent eventArgs) { element.Content = eventArgs.NewValue; } }; checkedField.OnFormEvent += (s, e) => { if (e is CheckElementChangedEvent eventArgs) { element.DefaultIsChecked = eventArgs.NewValue; element.IsChecked = eventArgs.NewValue; } }; group.Children.Add(textField); group.Children.Add(checkedField); }