// These methods are not used, but they are very useful when developing the Design experience #if Development /// <summary> /// Adds a default column for each property in the data source /// </summary> public static void GenerateColumns(ModelItem dataGridModelItem, EditingContext context) { using (ModelEditingScope scope = dataGridModelItem.BeginEdit(Properties.Resources.Generate_Columns)) { // Set databinding related properties DataGridDesignHelper.SparseSetValue(dataGridModelItem.Properties[MyPlatformTypes.DataGrid.AutoGenerateColumnsProperty], false); // Get the datasource object dataSource = dataGridModelItem.Properties[MyPlatformTypes.DataGrid.ItemsSourceProperty].ComputedValue; if (dataSource != null) { foreach (ColumnInfo columnGenerationInfo in DataGridDesignHelper.GetColumnGenerationInfos(dataSource)) { ModelItem dataGridColumn = null; dataGridColumn = DataGridDesignHelper.CreateDefaultDataGridColumn(context, columnGenerationInfo); if (dataGridColumn != null) { dataGridModelItem.Properties[MyPlatformTypes.DataGrid.ColumnsProperty].Collection.Add(dataGridColumn); } } } scope.Complete(); } }
private static void OnColumnIsReadOnlyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { PropertyColumnDataModel columnModel = (PropertyColumnDataModel)d; if (columnModel.Column != null) { DataGridDesignHelper.SparseSetValue(columnModel.Column.Properties[PlatformTypes.DataGridColumn.IsReadOnlyProperty], e.NewValue); } }
// Set any property defaults here public override void InitializeDefaults(ModelItem item) { if (item != null) { DataGridDesignHelper.SparseSetValue(item.Properties[PlatformTypes.DataGrid.WidthProperty], 200.0); DataGridDesignHelper.SparseSetValue(item.Properties[PlatformTypes.DataGrid.HeightProperty], 200.0); DataGridDesignHelper.SparseSetValue(item.Properties[PlatformTypes.DataGrid.AutoGenerateColumnsProperty], false); } }
/// <summary> /// When the column changes we need to sync other properties to keep our databinding in sync. /// </summary> private void SyncColumnProperties() { if (!_isSyncing) { _isSyncing = true; try { if (Column == null) { BindingPath = string.Empty; ColumnTypeName = string.Empty; HasColumn = false; } else { SetBindingPath(); ColumnTypeName = DataGridDesignHelper.GetColumnStringType(Column); HasColumn = true; // We sometimes want to pull the properties from the column, and other times we want to // push the models properties down to the column. if (_restoreColumn) { DataGridDesignHelper.SparseSetValue(Column.Properties[PlatformTypes.DataGridColumn.HeaderProperty], ColumnHeader); DataGridDesignHelper.SparseSetValue(Column.Properties[PlatformTypes.DataGridColumn.CanUserReorderProperty], ColumnCanUserReorder); DataGridDesignHelper.SparseSetValue(Column.Properties[PlatformTypes.DataGridColumn.CanUserResizeProperty], ColumnCanUserResize); DataGridDesignHelper.SparseSetValue(Column.Properties[PlatformTypes.DataGridColumn.CanUserSortProperty], ColumnCanUserSort); DataGridDesignHelper.SparseSetValue(Column.Properties[PlatformTypes.DataGridColumn.IsReadOnlyProperty], ColumnIsReadOnly); } else { // Update based on what's set in the ModelItem ModelProperty modelProperty = Column.Properties[PlatformTypes.DataGridColumn.HeaderProperty]; ColumnHeader = modelProperty.IsSet ? (string)modelProperty.ComputedValue : null; modelProperty = Column.Properties[PlatformTypes.DataGridColumn.CanUserReorderProperty]; ColumnCanUserReorder = modelProperty.IsSet ? (bool?)modelProperty.ComputedValue : null; modelProperty = Column.Properties[PlatformTypes.DataGridColumn.CanUserResizeProperty]; ColumnCanUserResize = modelProperty.IsSet ? (bool?)modelProperty.ComputedValue : null; modelProperty = Column.Properties[PlatformTypes.DataGridColumn.CanUserSortProperty]; ColumnCanUserSort = modelProperty.IsSet ? (bool?)modelProperty.ComputedValue : null; modelProperty = Column.Properties[PlatformTypes.DataGridColumn.IsReadOnlyProperty]; ColumnIsReadOnly = modelProperty.IsSet ? (bool?)modelProperty.ComputedValue : null; } } } finally { _isSyncing = false; } } }
private static void OnColumnHeaderPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { PropertyColumnDataModel columnModel = (PropertyColumnDataModel)d; if (columnModel.Column != null) { if (e.NewValue == null) { columnModel.Column.Properties[PlatformTypes.DataGridColumn.HeaderProperty].ClearValue(); } else { DataGridDesignHelper.SparseSetValue(columnModel.Column.Properties[PlatformTypes.DataGridColumn.HeaderProperty], e.NewValue); } } }
internal void OnHasColumnChanged() { EnsureSelectAllChecked(); DataGridDesignHelper.SparseSetValue(_dataGrid.Properties[PlatformTypes.DataGrid.AutoGenerateColumnsProperty], false); }