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); }
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); }
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); } }
public DataGridGroupHeaderAutomationPeer(DataGridGroupHeader owner) : base(owner) { }