Beispiel #1
0
        /// <summary>
        /// 根据 DetailLayoutMode 的值生成动态布局的表单。
        /// </summary>
        /// <param name="detailView"></param>
        /// <param name="properties"></param>
        /// <returns></returns>
        protected FrameworkElement GenerateEditors(
            DetailLogicalView detailView,
            IEnumerable <WPFEntityPropertyViewMeta> properties,
            DetailLayoutMode layoutMode
            )
        {
            if (detailView is QueryLogicalView)
            {
                return(this.GenerateGridEditors(detailView, properties));
            }

            switch (layoutMode)
            {
            case DetailLayoutMode.Dynamic:
                if (detailView.CalculateColumnsCount(properties) == 1)
                {
                    return(this.GenerateGridEditors(detailView, properties));
                }
                else
                {
                    return(this.GenerateWrappingEditors(detailView, properties));
                }

            case DetailLayoutMode.Wrapping:
                return(this.GenerateWrappingEditors(detailView, properties));

            case DetailLayoutMode.AutoGrid:
                return(this.GenerateGridEditors(detailView, properties));

            default:
                return(this.GenerateWrappingEditors(detailView, properties));
            }
        }
Beispiel #2
0
        /// <summary>
        /// 使用 AutoGrid 来生成表单。
        /// </summary>
        /// <param name="detailView"></param>
        /// <param name="properties"></param>
        /// <returns></returns>
        protected FrameworkElement GenerateGridEditors(DetailLogicalView detailView, IEnumerable <WPFEntityPropertyViewMeta> properties)
        {
            var panel = new AutoGrid
            {
                ColumnsCount = detailView.CalculateColumnsCount(properties),
                Orientation  = detailView.Meta.DetailAsHorizontal ? Orientation.Horizontal : Orientation.Vertical
            };

            foreach (var propertyView in properties)
            {
                panel.Children.Add(new EditorHost {
                    EntityProperty = propertyView
                });
            }

            return(EnableScoller(panel, panel.Orientation));
        }
Beispiel #3
0
        /// <summary>
        /// 使用 AutoGrid 来生成表单。
        /// </summary>
        /// <param name="detailView"></param>
        /// <param name="properties"></param>
        /// <returns></returns>
        protected FrameworkElement GenerateGridEditors(DetailLogicalView detailView, IEnumerable<WPFEntityPropertyViewMeta> properties)
        {
            var panel = new AutoGrid
            {
                ColumnsCount = detailView.CalculateColumnsCount(properties),
                Orientation = detailView.Meta.DetailAsHorizontal ? Orientation.Horizontal : Orientation.Vertical
            };

            foreach (var propertyView in properties)
            {
                panel.Children.Add(new EditorHost { EntityProperty = propertyView });
            }

            return EnableScoller(panel, panel.Orientation);
        }
Beispiel #4
0
        /// <summary>
        /// 根据 DetailLayoutMode 的值生成动态布局的表单。
        /// </summary>
        /// <param name="detailView"></param>
        /// <param name="properties"></param>
        /// <returns></returns>
        protected FrameworkElement GenerateEditors(
            DetailLogicalView detailView,
            IEnumerable<WPFEntityPropertyViewMeta> properties,
            DetailLayoutMode layoutMode
            )
        {
            if (detailView is QueryLogicalView)
            {
                return this.GenerateGridEditors(detailView, properties);
            }

            switch (layoutMode)
            {
                case DetailLayoutMode.Dynamic:
                    if (detailView.CalculateColumnsCount(properties) == 1)
                    {
                        return this.GenerateGridEditors(detailView, properties);
                    }
                    else
                    {
                        return this.GenerateWrappingEditors(detailView, properties);
                    }
                case DetailLayoutMode.Wrapping:
                    return this.GenerateWrappingEditors(detailView, properties);
                case DetailLayoutMode.AutoGrid:
                    return this.GenerateGridEditors(detailView, properties);
                default:
                    return this.GenerateWrappingEditors(detailView, properties);
            }
        }