/// <summary>
        /// Creates the image control.
        /// </summary>
        /// <param name="property">
        /// The property.
        /// </param>
        /// <returns>
        /// The control.
        /// </returns>
        protected FrameworkElement CreateImageControl(PropertyItem property)
        {
            var c = new Image {
                Stretch = Stretch.Uniform, HorizontalAlignment = HorizontalAlignment.Left
            };

            c.SetBinding(Image.SourceProperty, property.CreateOneWayBinding());
            return(c);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a control based on a template from a a <see cref="TypeEditor" />.
        /// </summary>
        /// <param name="property">The property.</param>
        /// <param name="editor">The editor.</param>
        /// <returns>
        /// A <see cref="ContentControl" />.
        /// </returns>
        protected virtual ContentControl CreateEditorControl(PropertyItem property, TypeEditor editor)
        {
            var c = new ContentControl
            {
                ContentTemplate     = editor.EditorTemplate,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Left
            };

            c.SetBinding(FrameworkElement.DataContextProperty, property.CreateOneWayBinding());
            return(c);
        }
        /// <summary>
        /// Creates the control for a property.
        /// </summary>
        /// <param name="property">
        /// The property item.
        /// </param>
        /// <param name="options">
        /// The options.
        /// </param>
        /// <returns>
        /// A element.
        /// </returns>
        public virtual FrameworkElement CreateControl(PropertyItem property, PropertyControlFactoryOptions options)
        {
            this.UpdateConverter(property);

            foreach (var editor in this.Editors)
            {
                if (editor.IsAssignable(property.Descriptor.PropertyType))
                {
                    var c = new ContentControl
                    {
                        ContentTemplate     = editor.EditorTemplate,
                        VerticalAlignment   = VerticalAlignment.Center,
                        HorizontalAlignment = HorizontalAlignment.Left
                    };
                    c.SetBinding(FrameworkElement.DataContextProperty, property.CreateOneWayBinding());
                    return(c);
                }
            }

            if (property.Is(typeof(bool)))
            {
                return(this.CreateBoolControl(property));
            }

            if (property.Is(typeof(Enum)))
            {
                return(this.CreateEnumControl(property, options));
            }

            if (property.Is(typeof(Color)))
            {
                return(this.CreateColorControl(property));
            }

            if (property.Is(typeof(Brush)))
            {
                return(this.CreateBrushControl(property));
            }

            if (property.Is(typeof(FontFamily)))
            {
                return(this.CreateFontFamilyControl(property));
            }

            if (property.Is(typeof(ImageSource)) || property.DataTypes.Contains(DataType.ImageUrl))
            {
                return(this.CreateImageControl(property));
            }

            if (property.DataTypes.Contains(DataType.Html))
            {
                return(this.CreateHtmlControl(property));
            }

            if (property.Is(typeof(Uri)))
            {
                return(this.CreateLinkControl(property));
            }

            if (property.ItemsSourceDescriptor != null)
            {
                return(this.CreateComboBoxControl(property));
            }

            if (property.Is(typeof(SecureString)))
            {
                return(this.CreateSecurePasswordControl(property));
            }

            if (this.UseDatePicker && property.Is(typeof(DateTime)))
            {
                return(this.CreateDateTimeControl(property));
            }

            if (property.IsFilePath)
            {
                return(this.CreateFilePathControl(property));
            }

            if (property.IsDirectoryPath)
            {
                return(this.CreateDirectoryPathControl(property));
            }

            if (property.PreviewFonts)
            {
                return(this.CreateFontPreview(property));
            }

            if (property.IsComment)
            {
                return(this.CreateCommentControl(property));
            }

            if (property.IsPassword)
            {
                return(this.CreatePasswordControl(property));
            }

            if (property.IsSlidable)
            {
                return(this.CreateSliderControl(property));
            }

            if (property.IsSpinnable)
            {
                return(this.CreateSpinControl(property));
            }

            if (property.Is(typeof(IList)))
            {
                return(this.CreateGridControl(property));
            }

            if (property.Is(typeof(IDictionary)))
            {
                return(this.CreateDictionaryControl(property));
            }

            return(this.CreateDefaultControl(property));
        }