public static IDataGridWpfColumn ToDataGridWpfColumn(SysDataGridColumn dataGridColumn) { IDataGridWpfColumn column = dataGridColumn switch { System.Windows.Controls.DataGridTextColumn => new WpfDataGridTextColumn(), System.Windows.Controls.DataGridComboBoxColumn => new WpfDataGridComboBoxColumn(), System.Windows.Controls.DataGridCheckBoxColumn => new WpfDataGridCheckBoxColumn(), System.Windows.Controls.DataGridTemplateColumn => new WpfDataGridTemplateColumn(), _ => new WpfDataGridTextColumn(), }; TransferProperties(dataGridColumn, column); if (dataGridColumn is System.Windows.Controls.DataGridCheckBoxColumn) { return(column); } CloneBinding(dataGridColumn as System.Windows.Controls.DataGridBoundColumn, column as System.Windows.Controls.DataGridBoundColumn); // if (dataGridColumn is System.Windows.Controls.DataGridTemplateColumn dgtc) // { // var c3 = column as System.Windows.Controls.DataGridTemplateColumn; // } // if (dataGridColumn is System.Windows.Controls.DataGridComboBoxColumn dgcbc) // { // var c2 = column as System.Windows.Controls.DataGridComboBoxColumn; // } return(column); }
public static IDataGridWpfColumn CreateWpfColumn(SysDataGridColumn dataGridColumn, System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e) { IDataGridWpfColumn column = CreateWpfColumnByDataType(e.PropertyType); column.FieldName = e.PropertyName; column.IsColumnFiltered = true; var pd = e.PropertyDescriptor as System.ComponentModel.PropertyDescriptor; var displayNameAttribute = pd.Attributes.OfType <DisplayNameAttribute>().FirstOrDefault(); var dataFormatAttribute = pd.Attributes.OfType <TMP.Shared.DataFormatAttribute>().FirstOrDefault(); string name = (displayNameAttribute != null) ? displayNameAttribute.DisplayName : e.PropertyName; string format = dataFormatAttribute?.DataFormatString; TransferProperties(dataGridColumn, column, name); if (column is System.Windows.Controls.DataGridBoundColumn dgbc) { dgbc.Binding = new Binding(e.PropertyName) { Mode = BindingMode.OneWay }; dgbc.Binding.StringFormat = format; } return(column); }
private static void TransferProperties(SysDataGridColumn dataGridColumn, IDataGridWpfColumn column, string customHeader = null) { var c = column as SysDataGridColumn; if (c == null) { System.Diagnostics.Debugger.Break(); } c.Header = string.IsNullOrEmpty(customHeader) ? dataGridColumn.Header : customHeader; c.Visibility = dataGridColumn.Visibility; if (dataGridColumn.DisplayIndex != -1) { c.DisplayIndex = dataGridColumn.DisplayIndex; } }