Esempio n. 1
0
 /// <summary>
 /// 定义列到属性的映射。
 /// </summary>
 /// <param name="properties">
 /// Key:列名,将会使用这个列名来显示。
 /// Value:列名在对象中所对应的属性名。
 /// </param>
 protected virtual void DefineTable(List <WPFEntityPropertyViewMeta> properties, EntityViewMeta evm)
 {
     foreach (WPFEntityPropertyViewMeta property in evm.OrderedEntityProperties())
     {
         if (property.CanShowIn(ShowInWhere.List))
         {
             properties.Add(property);
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 自动生成树形列表UI
        /// </summary>
        /// <param name="evm"></param>
        /// <param name="listShowInWhere">
        /// 这个表格需要显示在哪个位置。
        /// <remarks>生成引擎根据元数据中各属性定义的显示逻辑来生成列。</remarks>
        /// </param>
        /// <returns></returns>
        public RafyTreeGrid CreateTreeGrid(EntityViewMeta evm, ListShowInWhere listShowInWhere)
        {
            if (evm == null)
            {
                throw new ArgumentNullException("vm");
            }

            //使用TreeGrid作为TreeListControl
            var treeGrid = new RafyTreeGrid
            {
                OnlyGridMode           = !evm.EntityMeta.IsTreeEntity,
                GroupingStyle          = RafyResources.GroupContainerStyle,
                CheckingColumnTemplate = RafyResources.Rafy_MTTG_SelectionColumnTemplate,
                NoDataText             = "没有数据".Translate(),
                CheckingColumnHeader   = "选择".Translate(),
                SummaryRowTitle        = "合计:".Translate(),
                ShowSummaryRow         = GetNeedSummary(evm)
            };

            if (!string.IsNullOrEmpty(evm.Label))
            {
                AutomationProperties.SetName(treeGrid, evm.Label);
            }
            TreeGridRow.SetAutomationProperty(treeGrid, evm.TryGetPrimayDisplayProperty());

            var showInWhere = (ShowInWhere)listShowInWhere;

            //使用list里面的属性生成每一列
            foreach (WPFEntityPropertyViewMeta property in evm.OrderedEntityProperties())
            {
                if (property.CanShowIn(showInWhere))
                {
                    var column = this.TreeColumnFactory.Create(property);

                    treeGrid.Columns.Add(column);
                }
            }

            treeGrid.ApplyTemplate();

            /*********************** 代码块解释 *********************************
             * 表格的设计,与 FocusTrackerAdorner 不兼容,暂时把它排除。
             * 目前,有以下问题:
             * * 表格中横向拖动滚动条时,焦点跟踪框的位置没有更新。
             * * 表格中从一行的编辑框进入另一行某个单元格的编辑时,跟踪框位置没有更新。
             **********************************************************************/
            FocusTrackerAdorner.SetTrackFocusScope(treeGrid, TrackFocusScope.Exclude);

            return(treeGrid);
        }
Esempio n. 3
0
        /// <summary>
        /// 自动生成树形列表UI
        /// </summary>
        /// <param name="evm"></param>
        /// <param name="listShowInWhere">
        /// 这个表格需要显示在哪个位置。
        /// <remarks>生成引擎根据元数据中各属性定义的显示逻辑来生成列。</remarks>
        /// </param>
        /// <returns></returns>
        public RafyTreeGrid CreateTreeGrid(EntityViewMeta evm, ListShowInWhere listShowInWhere)
        {
            if (evm == null) throw new ArgumentNullException("vm");

            //使用TreeGrid作为TreeListControl
            var treeGrid = new RafyTreeGrid
            {
                OnlyGridMode = !evm.EntityMeta.IsTreeEntity,
                GroupingStyle = RafyResources.GroupContainerStyle,
                CheckingColumnTemplate = RafyResources.Rafy_MTTG_SelectionColumnTemplate,
                NoDataText = "没有数据".Translate(),
                CheckingColumnHeader = "选择".Translate(),
                SummaryRowTitle = "合计:".Translate(),
                ShowSummaryRow = GetNeedSummary(evm)
            };
            if (!string.IsNullOrEmpty(evm.Label))
            {
                AutomationProperties.SetName(treeGrid, evm.Label);
            }
            TreeGridRow.SetAutomationProperty(treeGrid, evm.TryGetPrimayDisplayProperty());

            var showInWhere = (ShowInWhere)listShowInWhere;

            //使用list里面的属性生成每一列
            foreach (WPFEntityPropertyViewMeta property in evm.OrderedEntityProperties())
            {
                if (property.CanShowIn(showInWhere))
                {
                    var column = this.TreeColumnFactory.Create(property);

                    treeGrid.Columns.Add(column);
                }
            }

            treeGrid.ApplyTemplate();

            /*********************** 代码块解释 *********************************
             * 表格的设计,与 FocusTrackerAdorner 不兼容,暂时把它排除。
             * 目前,有以下问题:
             * * 表格中横向拖动滚动条时,焦点跟踪框的位置没有更新。
             * * 表格中从一行的编辑框进入另一行某个单元格的编辑时,跟踪框位置没有更新。
            **********************************************************************/
            FocusTrackerAdorner.SetTrackFocusScope(treeGrid, TrackFocusScope.Exclude);

            return treeGrid;
        }
Esempio n. 4
0
 /// <summary>
 /// 定义列到属性的映射。
 /// </summary>
 /// <param name="properties">
 /// Key:列名,将会使用这个列名来显示。
 /// Value:列名在对象中所对应的属性名。
 /// </param>
 protected virtual void DefineTable(List<WPFEntityPropertyViewMeta> properties, EntityViewMeta evm)
 {
     foreach (WPFEntityPropertyViewMeta property in evm.OrderedEntityProperties())
     {
         if (property.CanShowIn(ShowInWhere.List))
         {
             properties.Add(property);
         }
     }
 }