private static void ApplySettingsToColumns(DataGrid dataGrid, Action <DataGrid, DataGridColumn, DataGridColumnSettingsModel> function) { DataGridSettings settings = GetDataGridSettings(dataGrid.Name); if (settings.ColumnsSetting == null || !settings.ColumnsSetting.Any()) { return; } IEnumerable <DataGridColumn> columns = dataGrid.Columns.Where(column => column.Header != null); foreach (DataGridColumn column in columns) { DataGridColumnSettingsModel columnSettings = settings.ColumnsSetting.FirstOrDefault(iColumnSettings => iColumnSettings.Header.Equals( column.Header.ToString(), StringComparison.InvariantCultureIgnoreCase)); if (columnSettings == null) { continue; } function(dataGrid, column, columnSettings); } }
private static void SaveSettings(DataGrid dataGrid, DataGridColumnSettingsType settingsType) { DataGridSettings settings = GetDataGridSettings(dataGrid.Name); IEnumerable <DataGridColumn> columns = dataGrid.Columns.Where(column => column.Header != null); settings.ColumnsSetting = settings.ColumnsSetting ?? new List <DataGridColumnSettingsModel>(); foreach (DataGridColumn column in columns) { DataGridColumnSettingsModel columnSettings = settings.ColumnsSetting.FirstOrDefault(iColumnSettings => iColumnSettings.Header.Equals( column.Header.ToString(), StringComparison.InvariantCultureIgnoreCase)); if (columnSettings != null) { switch (settingsType) { case DataGridColumnSettingsType.DisplayIndex: columnSettings.DisplayIndex = column.DisplayIndex; break; case DataGridColumnSettingsType.Sorting: columnSettings.SortDirection = column.SortDirection; break; case DataGridColumnSettingsType.Width: columnSettings.Width = new DataGridLengthSettingsModel { Value = column.Width.Value, DesiredValue = column.Width.DesiredValue, DisplayValue = column.Width.DisplayValue, UnitType = column.Width.UnitType }; break; case DataGridColumnSettingsType.Visibility: columnSettings.Visibility = column.Visibility; break; } } else { columnSettings = new DataGridColumnSettingsModel { Header = column.Header.ToString(), DisplayIndex = column.DisplayIndex, Width = new DataGridLengthSettingsModel { Value = column.Width.Value, DesiredValue = column.Width.DesiredValue, DisplayValue = column.Width.DisplayValue, UnitType = column.Width.UnitType }, SortDirection = column.SortDirection, Visibility = column.Visibility }; settings.ColumnsSetting.Add(columnSettings); } } settings.Save(); }
private static void SetColumnVisibility(DataGrid dataGrid, DataGridColumn column, DataGridColumnSettingsModel settings) { column.Visibility = settings.Visibility; }
private static void SetColumnSorting(DataGrid dataGrid, DataGridColumn column, DataGridColumnSettingsModel settings) { column.SortDirection = settings.SortDirection; if (!column.SortDirection.HasValue) { return; } dataGrid.Items.SortDescriptions.Clear(); dataGrid.Items.SortDescriptions.Add(new SortDescription(column.SortMemberPath, column.SortDirection.Value)); dataGrid.Items.Refresh(); }
private static void SetColumnDisplayIndex(DataGrid dataGrid, DataGridColumn column, DataGridColumnSettingsModel settings) { if (settings.DisplayIndex < dataGrid.Columns.Count) { column.DisplayIndex = settings.DisplayIndex; } }
private static void SetColumnWidth(DataGrid dataGrid, DataGridColumn column, DataGridColumnSettingsModel settings) { column.Width = new DataGridLength(settings.Width.Value, settings.Width.UnitType, settings.Width.DesiredValue, settings.Width.DisplayValue); }