void DataGrid_DetailsViewLoading(object sender, DetailsViewLoadingAndUnloadingEventArgs e) { CustomColumnSizerBehavior.SetIsEnabled(e.DetailsViewDataGrid, true); var visualContainer = e.DetailsViewDataGrid.GetVisualContainer(); try { var items = (TrackableCollection <PublishedAction>)e.DetailsViewDataGrid.ItemsSource; int nbRows = visualContainer.RowCount; int?nbItems = items?.Count; if (nbItems.HasValue) { for (int i = 0; i < nbItems; i++) { if (items[i].IsGroup) { if (e.DetailsViewDataGrid.GridColumnSizer.GetAutoRowHeight(i, gridRowResizingOptions, out double autoHeight)) { visualContainer.RowHeights[i + 1] = Math.Max(autoHeight, DefaultGroupHeight); } else { visualContainer.RowHeights[i + 1] = DefaultGroupHeight; } } else { if (e.DetailsViewDataGrid.GridColumnSizer.GetAutoRowHeight(i, gridRowResizingOptions, out double autoHeight)) { visualContainer.RowHeights[i + 1] = Math.Max(autoHeight, DefaultNotGroupHeight); } else { visualContainer.RowHeights[i + 1] = DefaultNotGroupHeight; } } } } } catch (Exception ex) { Locator.TraceManager.TraceError(ex, "Erreur lors de la modification de la hauteur des lignes du tableau."); } visualContainer.InvalidateMeasure(); }
void DataGrid_DetailsViewLoading(object sender, DetailsViewLoadingAndUnloadingEventArgs e) { Publication linkedPublication = null; TrackableCollection <PublishedAction> publishedActions = null; if (e.DetailsViewDataGrid.ItemsSource is TrackableCollection <PublishedAction> source && source.Any()) { publishedActions = source; linkedPublication = source.First().Publication; } if (e.DetailsViewDataGrid.SerializationController != null && !(e.DetailsViewDataGrid.SerializationController is LinkedPublicationDataGridSerialization)) { e.DetailsViewDataGrid.SerializationController = new LinkedPublicationDataGridSerialization(e.DetailsViewDataGrid); e.DetailsViewDataGrid.CellTapped += DetailsViewDataGrid_CellTapped; if (linkedPublication?.Inspection_Disposition != null && linkedPublication.Inspection_Disposition.Length > 1) { e.DetailsViewDataGrid.CustomDeserialize(linkedPublication.Inspection_Disposition); // On supprime les colonnes inutiles e.DetailsViewDataGrid.RemoveHiddenColumns(); // On renomme les colonnes e.DetailsViewDataGrid.RenameColumns(); } e.DetailsViewDataGrid.SortComparers.Add(new SortComparer { Comparer = new WBSComparer(), PropertyName = nameof(PublishedAction.WBS) }); e.DetailsViewDataGrid.SortColumnDescriptions.Clear(); e.DetailsViewDataGrid.SortColumnDescriptions.Add(new SortColumnDescription { ColumnName = nameof(PublishedAction.WBS), SortDirection = ListSortDirection.Ascending }); e.DetailsViewDataGrid.ExpanderColumnWidth = 0; CustomColumnSizerBehavior.SetIsEnabled(e.DetailsViewDataGrid, true); //var columnSizer = (CustomColumnSizer)e.DetailsViewDataGrid.GridColumnSizer; try { //e.DetailsViewDataGrid.Columns["WBS"].Width = publishedActions.Select(_ => columnSizer.MeasureText(IndentWBSConverter.Instance.Convert(_.WBS), e.DetailsViewDataGrid.Columns["WBS"], true).Width).Max() + 10; e.DetailsViewDataGrid.Columns[nameof(PublishedAction.WBS)].DisplayBinding = new Binding(nameof(PublishedAction.WBS)) { Mode = BindingMode.OneWay, Converter = IndentWBSConverter.Instance }; } catch { } e.DetailsViewDataGrid.Columns[nameof(PublishedAction.Label)].CellTemplateSelector = Resources["LabelStyleSelector"] as DataTemplateSelector; if (e.DetailsViewDataGrid.Columns.Any(_ => _.MappingName == nameof(PublishedAction.PublishedResource))) { e.DetailsViewDataGrid.Columns[nameof(PublishedAction.PublishedResource)].CellTemplateSelector = Resources["PublishedResourceDataGridTemplateSelector"] as DataTemplateSelector; } if (e.DetailsViewDataGrid.Columns.Any(_ => _.MappingName == nameof(PublishedAction.PublishedActionCategory))) { e.DetailsViewDataGrid.Columns[nameof(PublishedAction.PublishedActionCategory)].CellTemplateSelector = Resources["PublishedCategoryDataGridTemplateSelector"] as DataTemplateSelector; } } var visualContainer = e.DetailsViewDataGrid.GetVisualContainer(); try { var items = (TrackableCollection <PublishedAction>)e.DetailsViewDataGrid.ItemsSource; int?nbItems = items?.Count; if (nbItems.HasValue) { for (int i = 0; i < nbItems; i++) { if (items[i].IsGroup) { if (e.DetailsViewDataGrid.GridColumnSizer.GetAutoRowHeight(i, gridRowResizingOptions, out double autoHeight)) { visualContainer.RowHeights[2 * i + 1] = Math.Max(autoHeight, DefaultGroupHeight); } else { visualContainer.RowHeights[2 * i + 1] = DefaultGroupHeight; } } else { if (e.DetailsViewDataGrid.GridColumnSizer.GetAutoRowHeight(i, gridRowResizingOptions, out double autoHeight)) { visualContainer.RowHeights[2 * i + 1] = Math.Max(autoHeight, DefaultNotGroupHeight); } else { visualContainer.RowHeights[2 * i + 1] = DefaultNotGroupHeight; } } } } } catch (Exception ex) { Locator.TraceManager.TraceError(ex, "Erreur lors de la modification de la hauteur des lignes du tableau."); } visualContainer.InvalidateMeasure(); }