FrameworkElement GetDisplayElement(PropertyInfo prop, APIRequiredPropertyAttribute attrib, int row, int column)
        {
            string    name      = !string.IsNullOrEmpty(attrib.Name) ? attrib.Name : prop.Name;
            TextBlock textBlock = new TextBlock()
            {
                Text = name
            };

            textBlock.Margin = new Thickness(5);
            Grid.SetRow(textBlock, row);
            Grid.SetColumn(textBlock, column);
            return(textBlock);
        }
        FrameworkElement GetEditorControl(PropertyInfo prop, APIRequiredPropertyAttribute attrib, int row, int column)
        {
            Binding textBinding = new Binding(prop.Name);

            textBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

            TextBox textBox = new TextBox();

            textBox.SetBinding(TextBox.TextProperty, textBinding);
            textBox.Margin = new Thickness(5);
            Grid.SetRow(textBox, row);
            Grid.SetColumn(textBox, column);

            return(textBox);
        }