Exemple #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);
                }
            }
        }
        public object GenerateContainerForItem(RowGenerationContext info, object containerType)
        {
            DataGridGroupHeader groupHeader = null;

            object generatedContent = null;

            if (groupHeaderType.Equals(containerType))
            {
                groupHeader = new DataGridGroupHeader();
            }
            else if (object.Equals(frozenHeader, containerType))
            {
                // Frozen Headers are placed in different panel (not in cells panel).
                groupHeader = new DataGridGroupHeader(true);
            }

            if (groupHeader != null)
            {
                if (groupHeader.IsFrozen)
                {
                    this.owner.FrozenGroupHeadersHost.Children.Add(groupHeader);
                }
                else
                {
                    var contentLayer = this.owner.GroupHeadersContentLayer;
                    if (contentLayer != null)
                    {
                        contentLayer.AddVisualChild(groupHeader);
                    }
                }

                generatedContent = groupHeader;
            }

            if (containerType != null && containerType.Equals(loadingDataControlType))
            {
                var control = new DataGridLoadDataControl();

                var contentLayer = this.owner.GetContentLayerForColumn(null);
                if (contentLayer != null)
                {
                    contentLayer.AddVisualChild(control);
                }

                generatedContent = control;
            }

            if (rowDetailType.Equals(containerType))
            {
                generatedContent = this.owner.rowDetailsService.DetailsPresenter;
                this.owner.rowDetailsService.DetailsPresenter.Visibility = Visibility.Visible;
            }

            return(generatedContent);
        }
Exemple #3
0
        public void ClearContainerForItem(GridRowModel decorator)
        {
            DataGridLoadDataControl control = decorator.Container as DataGridLoadDataControl;

            if (control != null)
            {
                control.Owner = null;
                this.owner.visualStateService.UnregisterDataLoadingListener((IDataStatusListener)control);
            }

            DataGridGroupHeader groupHeader = decorator.Container as DataGridGroupHeader;

            if (groupHeader != null)
            {
                groupHeader.Owner = null;
            }
        }
        internal void OnGroupHeaderTap(DataGridGroupHeader header)
        {
            var context = header.DataContext as GroupHeaderContext;

            context.IsExpanded = header.IsExpanded;

            this.commandService.ExecuteCommand(CommandId.GroupHeaderTap, context);

            // get the value from the context as the command may have it toggled
            header.IsExpanded = context.IsExpanded;

            this.CurrencyService.RefreshCurrentItem(false);

            this.TryFocus(FocusState.Pointer, false);

            this.ResetSelectedHeader();

            this.ContentFlyout.Hide(DataGridFlyoutId.All);
        }
Exemple #5
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);
            }
        }
Exemple #6
0
 public DataGridGroupHeaderAutomationPeer(DataGridGroupHeader owner)
     : base(owner)
 {
 }