public FrameworkElement Build(Func <FormElement, FrameworkElement> elementBuilder) { var panel = new ActionPanel { Margin = new Thickness(0d, Top, 0d, Bottom) }; foreach (var element in Elements) { if (element is FormElementLayout formElementLayout) { var contentPresenter = elementBuilder(formElementLayout.Element); ActionPanel.SetPosition(contentPresenter, formElementLayout.Element.LinePosition); panel.Children.Add(contentPresenter); } else { panel.Children.Add(element.Build(elementBuilder)); } } return(panel); }