Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }