/// <summary> /// Creates a DataGridColumn derived ModelItem /// </summary> internal static ModelItem CreateColumnFromColumnType(EditingContext context, TypeIdentifier dataGridColumnTypeId, ColumnInfo columnGenerationInfo) { ModelItem dataGridColumn = ModelFactory.CreateItem(context, dataGridColumnTypeId); if (columnGenerationInfo.HeaderFromAttribute == null) { // Default the Header to the property name if there's no attribute tied to it dataGridColumn.Properties[PlatformTypes.DataGridColumn.HeaderProperty].SetValue(columnGenerationInfo.PropertyInfo.Name); } if (dataGridColumnTypeId == PlatformTypes.DataGridTemplateColumn.TypeId) { return CreateTemplateColumn(context, columnGenerationInfo, dataGridColumn); } ModelItem binding = ModelFactory.CreateItem(context, PlatformTypes.Binding.TypeId); binding.Properties[PlatformTypes.Binding.PathProperty].SetValue(columnGenerationInfo.PropertyInfo.Name); // ReadOnly Properties are handled by the runtime so we don't need to alter the Binding here // to account for them. // Whether or not a column can sort is handled by the runtime as well dataGridColumn.Properties[PlatformTypes.DataGridBoundColumn.BindingProperty].SetValue(binding); return dataGridColumn; }
/// <summary> /// Creates a DataGridTemplateColumn ModelItem with default templates for this property /// </summary> internal static ModelItem CreateTemplateColumn(EditingContext context, ColumnInfo columnGenerationInfo, ModelItem dataGridColumn) { ModelItem displayDataTemplate = CreateDataTemplate(context, PlatformTypes.TextBlock.TypeId, PlatformTypes.TextBlock.TextProperty, columnGenerationInfo.PropertyInfo.Name); dataGridColumn.Properties[PlatformTypes.DataGridTemplateColumn.CellTemplateProperty].SetValue(displayDataTemplate); ModelItem editingDataTemplate = CreateDataTemplate(context, PlatformTypes.TextBox.TypeId, PlatformTypes.TextBox.TextProperty, columnGenerationInfo.PropertyInfo.Name); dataGridColumn.Properties[PlatformTypes.DataGridTemplateColumn.CellEditingTemplateProperty].SetValue(editingDataTemplate); return dataGridColumn; }
/// <summary> /// Creates a DataGridColumn derived ModelItem based on the PropertyDescriptor's PropertyType. /// </summary> internal static ModelItem CreateDefaultDataGridColumn(EditingContext context, ColumnInfo columnGenerationInfo) { TypeIdentifier dataGridColumnTypeId; if (columnGenerationInfo.PropertyInfo.PropertyType == typeof(bool)) { dataGridColumnTypeId = PlatformTypes.DataGridCheckBoxColumn.TypeId; } else { dataGridColumnTypeId = PlatformTypes.DataGridTextColumn.TypeId; } // Add checks here for other column types when they come online return CreateColumnFromColumnType(context, dataGridColumnTypeId, columnGenerationInfo); }