Windows Presentation Foundation

From Richard's Wiki
Revision as of 00:16, 16 November 2011 by Rkdrm (Talk | contribs)

Jump to: navigation, search
  • Set max characters in column for WPF DataGridColumn. Use DataGridTextColumn.EditingElementStyle.Setters.Add(new Setter(TextBox.MaxLengthProperty, maxColumnLength)):
private void DataGrid_AutoGeneratedColumns(object sender, EventArgs e)
       {
           DataGrid datagrid = sender as DataGrid;
           if (datagrid == null) return;
           Type entityMetadataType = MetadataType(ViewModel.CurrentType);
           var columns = datagrid.Columns;
           var orderedColumns = columns
               .OrderBy(c => DisplayMetadataHelper.GetDisplayInfo(entityMetadataType, c.Header as string).DisplayOrder)
               .ToList();
           foreach (DataGridColumn dataGridColumn in columns)
           {
               dataGridColumn.DisplayIndex = orderedColumns.IndexOf(dataGridColumn);
               DisplayMetadataHelper.DisplayInfo displayInfo = DisplayMetadataHelper.GetDisplayInfo(entityMetadataType, dataGridColumn.Header as string);
               dataGridColumn.Header = displayInfo.DisplayName;
               if ((dataGridColumn is DataGridTextColumn) &&
                   (displayInfo.MaxLength.HasValue))
               {
                   int maxColumnLength = displayInfo.MaxLength.Value;
                   Style newStyle = new Style(typeof(TextBox), ((DataGridTextColumn)dataGridColumn).EditingElementStyle);
                   newStyle.Setters.Add(new Setter(TextBox.MaxLengthProperty, maxColumnLength));
                   ((DataGridTextColumn) dataGridColumn).EditingElementStyle = newStyle;
               }
           }
       }