/// <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); } } }
/// <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); }
/// <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; }
/// <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); } } }