示例#1
0
        private void PrepareGroupRow(GridRowModel decorator, DataGridGroupHeader groupHeader)
        {
            if (groupHeader != null)
            {
                groupHeader.Owner = this.owner;

                var context = new GroupHeaderContext()
                {
                    Level      = decorator.ItemInfo.Level,
                    Descriptor = this.owner.GroupDescriptors[decorator.ItemInfo.Level],
                    Group      = decorator.ItemInfo.Item as IDataGroup,
                    IsExpanded = !decorator.ItemInfo.IsCollapsed,
                    Grid       = this.owner
                };
                groupHeader.DataContext = context;
                groupHeader.IsExpanded  = context.IsExpanded;

                this.UpdateGroupHeaderStyleAndTemplate(groupHeader, context);

                groupHeader.IndentWidth = this.owner.IndentWidth * decorator.ItemInfo.Level;

                if (groupHeader.IsFrozen)
                {
                    // We assume that no more that 20 GroupDescriptions will be added.
                    // If needed this number can be increased.
                    Canvas.SetZIndex(groupHeader, MaxGroupCount - decorator.ItemInfo.Level);
                }
            }
        }
示例#2
0
        private void UpdateGroupHeaderStyleAndTemplate(DataGridGroupHeader groupHeader, GroupHeaderContext context)
        {
            var style = this.owner.GroupHeaderStyle;

            if (style == null)
            {
                if (this.owner.GroupHeaderStyleSelector != null)
                {
                    style = this.owner.GroupHeaderStyleSelector.SelectStyle(context, groupHeader);
                }
            }

            if (style != null)
            {
                groupHeader.Style = style;
            }
            else
            {
                groupHeader.ClearValue(DataGridGroupHeader.StyleProperty);
            }

            var dataTemplate = this.owner.GroupHeaderTemplate;

            if (dataTemplate == null)
            {
                if (this.owner.GroupHeaderTemplateSelector != null)
                {
                    dataTemplate = this.owner.GroupHeaderTemplateSelector.SelectTemplate(context, groupHeader);
                }
            }

            if (dataTemplate != null)
            {
                groupHeader.ContentTemplate = dataTemplate;
            }
            else
            {
                groupHeader.ClearValue(DataGridGroupHeader.ContentTemplateProperty);
            }
        }