示例#1
0
        private void LoadCollectionView()
        {
            var vm = (WordListsViewModel) DataContext;

            WordListsGrid.CurrentColumn = null;
            WordListsGrid.CurrentItem = null;
            WordListsGrid.Columns.Clear();
            var view = new DataGridCollectionView(vm.Varieties, typeof(WordListsVarietyViewModel), false, false);
            view.ItemProperties.Add(new DataGridItemProperty("Variety", ".", typeof(WordListsVarietyViewModel)));
            IComparer sortComparer = ProjectionComparer<WordListsVarietyMeaningViewModel>.Create(meaning => meaning.StrRep);
            for (int i = 0; i < vm.Meanings.Count; i++)
                view.ItemProperties.Add(new DataGridItemProperty("Meaning" + i, string.Format("Meanings[{0}]", i), typeof(WordListsVarietyMeaningViewModel)) {SortComparer = sortComparer});
            vm.VarietiesView = view;
            WordListsGrid.Items.SortDescriptions.Clear();

            var headerColumn = new Column {FieldName = "Variety"};
            DataGridControlBehaviors.SetIsRowHeader(headerColumn, true);
            DataGridControlBehaviors.SetAutoSize(headerColumn, true);
            DataGridControlBehaviors.SetAutoSizePadding(headerColumn, 18);
            WordListsGrid.Columns.Add(headerColumn);
            for (int i = 0; i < vm.Meanings.Count; i++)
            {
                var column = new Column {FieldName = "Meaning" + i, Width = 100, CellEditor = WordListsGrid.DefaultCellEditors[typeof(WordListsVarietyMeaningViewModel)]};
                var titleBinding = new Binding(string.Format("DataGridControl.DataContext.Meanings[{0}].Gloss", i)) {RelativeSource = RelativeSource.Self};
                BindingOperations.SetBinding(column, ColumnBase.TitleProperty, titleBinding);
                WordListsGrid.Columns.Add(column);
            }
        }
示例#2
0
 private static Xceed.Wpf.DataGrid.Column CreateColumn(Xceed.Wpf.DataGrid.DataGridControl dataGrid, object columnSource)
 {
     Xceed.Wpf.DataGrid.Column column = new Xceed.Wpf.DataGrid.Column();
     column.Title     = GetPropertyValue(columnSource, "HeaderText");
     column.FieldName = GetPropertyValue(columnSource, "DisplayMember") as string;
     return(column);
 }
        private void LoadCollectionView()
        {
            var vm = (SegmentMappingsChartViewModel) DataContext;

            SegmentsDataGrid.CurrentColumn = null;
            SegmentsDataGrid.Columns.Clear();
            var view = new DataGridCollectionView(vm.Segments.Reverse(), typeof (SegmentMappingsChartSegmentViewModel), false, false);
            view.ItemProperties.Add(new DataGridItemProperty("Segment", ".", typeof(SegmentMappingsChartSegmentViewModel)));
            for (int i = 0; i < vm.Segments.Count; i++)
                view.ItemProperties.Add(new DataGridItemProperty(vm.Segments[i].StrRep, string.Format("SegmentPairs[{0}]", i), typeof(SegmentMappingsChartSegmentPairViewModel)));
            SegmentsDataGrid.ItemsSource = view;

            var headerColumn = new Column {FieldName = "Segment"};
            DataGridControlBehaviors.SetIsRowHeader(headerColumn, true);
            headerColumn.Width = 30;
            headerColumn.CellVerticalContentAlignment = VerticalAlignment.Center;
            headerColumn.CellHorizontalContentAlignment = HorizontalAlignment.Center;
            SegmentsDataGrid.Columns.Add(headerColumn);
            foreach (SegmentMappingsChartSegmentViewModel segment in vm.Segments)
            {
                SegmentsDataGrid.Columns.Add(new Column
                {
                    FieldName = segment.StrRep,
                    Title = segment.StrRep,
                    Width = 30,
                    AllowSort = false,
                    CellHorizontalContentAlignment = HorizontalAlignment.Center,
                    CellVerticalContentAlignment = VerticalAlignment.Center,
                    CellContentTemplate = (DataTemplate) SegmentsDataGrid.Resources["SegmentPairTemplate"],
                    CellEditor = SegmentsDataGrid.DefaultCellEditors[typeof(SegmentMappingsChartSegmentPairViewModel)]
                });
            }
        }
示例#4
0
 private static void CreateColumns(Xceed.Wpf.DataGrid.DataGridControl dataGrid, ICollectionView view)
 {
     foreach (var item in view)
     {
         Xceed.Wpf.DataGrid.Column column = CreateColumn(dataGrid, item);
         dataGrid.Columns.Add(column);
     }
 }
    internal static Column Create( string fieldName, object title, BindingBase displayMemberBinding )
    {
      // Disable warning for DisplayMemberBinding when internaly used
#pragma warning disable 618
      var column = new Column( fieldName, title, displayMemberBinding );
#pragma warning restore 618

      return column;
    }
示例#6
0
        protected override void StartDataItemField(DataGridContext dataGridContext, Column column, object fieldValue)
        {
            // We always insert the separator before the value except for the first item
            if( !_isFirstColumn )
                WriteToBaseStream(FormatSettings.Separator);
            else
                _isFirstColumn = false;

            string fieldValueString = FormatCsvData(null, fieldValue);
            WriteToBaseStream(fieldValueString);
        }
示例#7
0
        private void LoadCollectionView()
        {
            var vm = (SegmentsViewModel) DataContext;

            SegmentsDataGrid.CurrentColumn = null;
            SegmentsDataGrid.Columns.Clear();
            var view = new DataGridCollectionView(vm.Varieties, typeof(SegmentsVarietyViewModel), false, false);
            view.ItemProperties.Add(new DataGridItemProperty("Variety", ".", typeof(SegmentsVarietyViewModel)));
            for (int i = 0; i < vm.Segments.Count; i++)
                view.ItemProperties.Add(new DataGridItemProperty(vm.Segments[i].StrRep, string.Format("Segments[{0}].Frequency", i), typeof(int)));
            SegmentsDataGrid.ItemsSource = view;
            SegmentsDataGrid.Items.SortDescriptions.Clear();

            var headerColumn = new Column {FieldName = "Variety"};
            DataGridControlBehaviors.SetIsRowHeader(headerColumn, true);
            DataGridControlBehaviors.SetAutoSize(headerColumn, true);
            DataGridControlBehaviors.SetAutoSizePadding(headerColumn, 18);
            SegmentsDataGrid.Columns.Add(headerColumn);
            foreach (SegmentViewModel segment in vm.Segments)
                SegmentsDataGrid.Columns.Add(new Column {FieldName = segment.StrRep, Title = segment.StrRep, Width = 67, CellHorizontalContentAlignment = HorizontalAlignment.Center});
        }
示例#8
0
        private void LoadCollectionView()
        {
            var vm = (SimilarityMatrixViewModel) DataContext;

            SimMatrixGrid.Columns.Clear();
            var view = new DataGridCollectionView(vm.Varieties, typeof(SimilarityMatrixVarietyViewModel), false, false);
            view.ItemProperties.Add(new DataGridItemProperty("Variety", ".", typeof(SimilarityMatrixVarietyViewModel)));
            for (int i = 0; i < vm.Varieties.Count; i++)
                view.ItemProperties.Add(new DataGridItemProperty("Variety" + i, string.Format("VarietyPairs[{0}]", i), typeof(SimilarityMatrixVarietyPairViewModel)));
            SimMatrixGrid.ItemsSource = view;

            var headerColumn = new Column {FieldName = "Variety", Title = ""};
            DataGridControlBehaviors.SetIsRowHeader(headerColumn, true);
            DataGridControlBehaviors.SetAutoSize(headerColumn, true);
            DataGridControlBehaviors.SetAutoSizePadding(headerColumn, 18);
            SimMatrixGrid.Columns.Add(headerColumn);
            for (int i = 0; i < vm.Varieties.Count; i++)
            {
                var column = new Column {FieldName = "Variety" + i, Width = 30};
                var titleBinding = new Binding(string.Format("DataGridControl.DataContext.Varieties[{0}].Name", i)) {RelativeSource = RelativeSource.Self};
                BindingOperations.SetBinding(column, ColumnBase.TitleProperty, titleBinding);
                SimMatrixGrid.Columns.Add(column);
            }
        }
        /// <summary>
        /// Gets collection of dynamic capacities columns
        /// </summary>
        /// <returns></returns>
        private Collection<Column> _GetDynamicCapacitiesColumns(bool isReadOnly)
        {
            Collection<Column> dynamicColumns = new Collection<Column>();

            for (int i = 0; i < App.Current.Project.CapacitiesInfo.Count; i++)
            {
                Column col = new Column();
                col.FieldName = Capacities.GetCapacityPropertyName(i);
                col.Title = App.Current.Project.CapacitiesInfo[i].Name;
                col.ReadOnly = isReadOnly;
                col.CellContentTemplate = (DataTemplate)App.Current.FindResource("UnitCellContentTemplate");
                col.CellEditor = (CellEditor)App.Current.FindResource("UnitEditorTemplate");
                dynamicColumns.Add(col);
            }
            return dynamicColumns;
        }
        /// <summary>
        /// Gets collection of dynamic custom oreder properties columns
        /// </summary>
        /// <returns></returns>
        private Collection<Column> _GetDynamicCustomOrderColumns(bool isReadOnly)
        {
            Collection<Column> dynamicColumns = new Collection<Column>();

            OrderCustomPropertiesInfo infos = App.Current.Project.OrderCustomPropertiesInfo;

            for (int i = 0; i < infos.Count; i++)
            {
                OrderCustomProperty info = infos[i];

                Column col = new Column();
                col.FieldName = OrderCustomProperties.GetCustomPropertyName(i);
                col.Title = info.Name;

                if (info.Type == OrderCustomPropertyType.Text)
                    col.CellEditor = (CellEditor)App.Current.FindResource("CustomOrderPropertyTextEditor");
                else if (info.Type == OrderCustomPropertyType.Numeric)
                {
                    col.CellEditor = (CellEditor)App.Current.FindResource("CustomOrderPropertyNumericEditor");
                    col.CellContentTemplate = (DataTemplate)App.Current.FindResource("DefaultStringTemplate");
                }
                else
                {
                    Debug.Assert(false); // NOTE: not supported
                }

                col.ReadOnly = isReadOnly;
                dynamicColumns.Add(col);
            }
            return dynamicColumns;
        }
示例#11
0
    public static Column CreateColumnFromItemsSourceField(
      DataGridControl dataGridControl,
      IDictionary<Type, CellEditor> defaultCellEditors,
      FieldDescriptor field,
      bool autoCreateForeignKeyConfigurations )
    {
      if( ( field.IsASubRelationship ) || ( !field.Browsable ) )
        return null;

      string fieldName = field.Name;
      Type dataType = field.DataType;

      Column dataColumn = new Column();
      dataColumn.IsAutoCreated = true;
      dataColumn.FieldName = fieldName;

      bool readOnly = field.ReadOnly;
      bool overrideReadOnlyForInsertion = field.OverrideReadOnlyForInsertion;

      // We only set ReadOnly when the value is true in order for the inheritence chain to work.  
      // Otherwise, the column value is always used instead of the row or grid value.
      if( readOnly )
        dataColumn.ReadOnly = readOnly;

      dataColumn.OverrideReadOnlyForInsertion = overrideReadOnlyForInsertion;
      dataColumn.Title = field.DisplayName;

      // Disable warning for DisplayMemberBinding when internaly used
#pragma warning disable 618

      dataColumn.DisplayMemberBinding = ItemsSourceHelper.CreateDefaultBinding(
        false, field.Name, field,
        false, ( readOnly && !overrideReadOnlyForInsertion ), dataType );

#pragma warning restore 618

      //mark the Column's Binding as AutoCreated.
      dataColumn.IsBindingAutoCreated = true;
      dataColumn.IsBoundToDataGridUnboundItemProperty = field.IsDataGridUnboundItemProperty;

      CellEditor cellEditor = null;

      if( defaultCellEditors != null )
      {
        defaultCellEditors.TryGetValue( dataType, out cellEditor );
      }

      if( ( field.ForeignKeyDescription != null )
        && ( field.ForeignKeyDescription.ItemsSource != null )
        && ( autoCreateForeignKeyConfigurations ) )
      {
        // We will only use the default foreign key CellEditor
        // if:
        // - a ForeignKey ItemsSource was detected
        // - the grid allows the auto-creation of the ForeignKeyConfigurations
        // else, use the default CellEditor
        if( cellEditor == null )
        {
          cellEditor = DefaultCellEditorSelector.ForeignKeyCellEditor;
        }

        // Update the ForeignKeyConfiguration from the ForeignKeyDescription
        // found on the FieldDescriptor
        ForeignKeyConfiguration.SynchronizeForeignKeyConfigurationFromForeignKeyDescription(
          dataColumn,
          field.ForeignKeyDescription,
          autoCreateForeignKeyConfigurations );
      }

      if( cellEditor == null )
      {
        cellEditor = DefaultCellEditorSelector.SelectCellEditor( dataType );
      }

      dataColumn.CellEditor = cellEditor;
      return dataColumn;
    }
        /// <summary>
        /// Gets collection of dynamic address columns
        /// </summary>
        /// <returns></returns>
        private Collection<Column> _GetDynamicAddressColumns(bool isReadOnly)
        {
            Collection<Column> dynamicColumns = new Collection<Column>();

            for (int i = 0; i < App.Current.Geocoder.AddressFields.Length; i++)
            {
                AddressField addressField = App.Current.Geocoder.AddressFields[i];

                if (addressField.Visible)
                {
                    Column col = new Column();
                    col.FieldName = addressField.Type.ToString();
                    col.Title = addressField.Title;
                    col.ReadOnly = isReadOnly;
                    col.CellEditor = _GetAddressColumnEditor(addressField.Type);
                    dynamicColumns.Add(col);
                }
            }
            return dynamicColumns;
        }
示例#13
0
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.checkMe = ((System.Windows.Controls.CheckBox)(target));
                return;

            case 2:
                this.textBoxSearch = ((System.Windows.Controls.TextBox)(target));
                return;

            case 3:
                this.textBoxPeopleSearch = ((System.Windows.Controls.TextBox)(target));
                return;

            case 4:
                this.tabs = ((System.Windows.Controls.TabControl)(target));
                return;

            case 5:
                this.image = ((System.Windows.Controls.Image)(target));
                return;

            case 6:
                this.Grid = ((Xceed.Wpf.DataGrid.DataGridControl)(target));
                return;

            case 7:
                this.colStartDate = ((Xceed.Wpf.DataGrid.Column)(target));
                return;

            case 8:
                this.colEndDate = ((Xceed.Wpf.DataGrid.Column)(target));
                return;

            case 9:
                this.colDaysOpen = ((Xceed.Wpf.DataGrid.Column)(target));
                return;

            case 10:
                this.colValue = ((Xceed.Wpf.DataGrid.Column)(target));
                return;

            case 11:
                this.editPanel = ((System.Windows.Controls.ContentControl)(target));
                return;

            case 12:
                this.butAddProject = ((System.Windows.Controls.Button)(target));
                return;

            case 13:
                this.ButtonShowHide = ((System.Windows.Controls.Button)(target));

            #line 499 "..\..\..\Views\MainView.xaml"
                this.ButtonShowHide.Click += new System.Windows.RoutedEventHandler(this.Button_Click);

            #line default
            #line hidden
                return;
            }
            this._contentLoaded = true;
        }
示例#14
0
    internal static System.Windows.Data.Binding AutoCreateDisplayMemberBinding( Column column, DataGridContext dataGridContext, object dataItem, out bool isDataGridUnboundItemProperty )
    {
      System.Windows.Data.Binding displayMemberBinding = null;

      if( column == null )
        throw new ArgumentNullException( "column" );

      string name = column.FieldName;

      // Don't create the default binding if FieldName is null and we're in design-time.
      if( !string.IsNullOrEmpty( name ) )
      {
        ItemsSourceHelper.FieldDescriptor fieldDescriptor;
        dataGridContext.ItemsSourceFieldDescriptors.TryGetValue( name, out fieldDescriptor );

        isDataGridUnboundItemProperty = ( fieldDescriptor == null ) ? false :
          fieldDescriptor.IsDataGridUnboundItemProperty;

        displayMemberBinding = ItemsSourceHelper.CreateDefaultBinding(
          dataItem is DataRow, name, fieldDescriptor,
          false, ( column.ReadOnly && !column.OverrideReadOnlyForInsertion ), typeof( object ) );
      }
      else
      {
        isDataGridUnboundItemProperty = false;
      }

      return displayMemberBinding;
    }
示例#15
0
        private static void ColumnsSource_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            ICollectionView view      = sender as ICollectionView;
            var             dataGrids = GetDataGridControlsForColumnSource(view);

            if (dataGrids == null || dataGrids.Count == 0)
            {
                return;
            }

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                foreach (var dataGrid in dataGrids)
                {
                    for (int i = 0; i < e.NewItems.Count; i++)
                    {
                        Xceed.Wpf.DataGrid.Column column = CreateColumn(dataGrid, e.NewItems[i]);
                        dataGrid.Columns.Insert(e.NewStartingIndex + i, column);
                    }
                }
                break;

            case NotifyCollectionChangedAction.Move:
                foreach (var dataGrid in dataGrids)
                {
                    List <Xceed.Wpf.DataGrid.Column> columns = new List <Xceed.Wpf.DataGrid.Column>();
                    for (int i = 0; i < e.OldItems.Count; i++)
                    {
                        Xceed.Wpf.DataGrid.Column column = (Xceed.Wpf.DataGrid.Column)dataGrid.Columns[e.OldStartingIndex + i];
                        columns.Add(column);
                    }
                    for (int i = 0; i < e.NewItems.Count; i++)
                    {
                        Xceed.Wpf.DataGrid.Column column = columns[i];
                        dataGrid.Columns.Insert(e.NewStartingIndex + i, column);
                    }
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                foreach (var dataGrid in dataGrids)
                {
                    for (int i = 0; i < e.OldItems.Count; i++)
                    {
                        dataGrid.Columns.RemoveAt(e.OldStartingIndex);
                    }
                }
                break;

            case NotifyCollectionChangedAction.Replace:
                foreach (var dataGrid in dataGrids)
                {
                    for (int i = 0; i < e.NewItems.Count; i++)
                    {
                        Xceed.Wpf.DataGrid.Column column = CreateColumn(dataGrid, e.NewItems[i]);
                        dataGrid.Columns[e.NewStartingIndex + i] = column;
                    }
                }
                break;

            case NotifyCollectionChangedAction.Reset:
                foreach (var dataGrid in dataGrids)
                {
                    dataGrid.Columns.Clear();
                    CreateColumns(dataGrid, sender as ICollectionView);
                }
                break;

            default:
                break;
            }
        }
    internal static void SynchronizeForeignKeyConfigurationFromForeignKeyDescription(
      Column column,
      DataGridForeignKeyDescription description,
      bool autoCreateForeignKeyConfigurations )
    {
      if( ( description == null ) || ( column == null ) )
        return;

      ForeignKeyConfiguration configuration = column.ForeignKeyConfiguration;

      if( configuration == null )
      {
        if( !autoCreateForeignKeyConfigurations )
          return;

        configuration = new ForeignKeyConfiguration();
        configuration.IsAutoCreated = true;
        column.ForeignKeyConfiguration = configuration;
      }

      // ValuePath will be affected to the FieldName when the 
      // configuration is auto-created to be able to modify 
      // local source using foreign key value
      if( configuration.IsAutoCreated )
      {
        if( string.IsNullOrEmpty( configuration.ValuePath ) )
        {
          configuration.ValuePath = description.ValuePath;
        }
      }

      // Affect the ItemsSource on the configuration if it is not
      // already set
      if( ( configuration.ItemsSource == null )
        && ( description.ItemsSource != null ) )
      {
        configuration.ItemsSource = description.ItemsSource;
      }

      // Set the Converter if it was not locally set
      if( configuration.ForeignKeyConverter == null )
      {
        configuration.ForeignKeyConverter = description.ForeignKeyConverter;
      }
    }
示例#17
0
        protected override void StartHeaderField( DataGridContext dataGridContext, Column column )
        {
            // We always insert the separator before the value except for the first item
            if (!_isFirstColumn)
                WriteToBaseStream(FormatSettings.Separator);
            else
                _isFirstColumn = false;

            object columnHeader = UseFieldNamesInHeader || column.Title == null ? column.FieldName : column.Title;

            string fieldValueString = FormatCsvData(null, columnHeader);
            WriteToBaseStream(fieldValueString);
        }
 public static void RemoveListener( Column source, IWeakEventListener listener )
 {
   CurrentManager.ProtectedRemoveListener( source, listener );
 }
    private void UpdateContentTemplate( Column column, Group group )
    {
      if( column == null )
        return;

      bool contentTemplateAffected = false;
      bool contentTemplateSelectorAffected = false;

      if( column.GroupValueTemplate != null )
      {
        this.ContentTemplate = column.GroupValueTemplate;
        contentTemplateAffected = true;
      }
      else if( column.GroupValueTemplateSelector != null )
      {
        this.ContentTemplateSelector = column.GroupValueTemplateSelector;
        contentTemplateSelectorAffected = true;
      }

      if( !contentTemplateAffected && !contentTemplateSelectorAffected )
      {
        ForeignKeyConfiguration foreignKeyConfiguration = column.ForeignKeyConfiguration;
        if( foreignKeyConfiguration != null )
        {
          if( column.CellContentTemplate != null )
          {
            this.ContentTemplate = column.CellContentTemplate;
            contentTemplateAffected = true;
          }
          else if( column.CellContentTemplateSelector != null )
          {
            this.ContentTemplateSelector = column.CellContentTemplateSelector;
            contentTemplateSelectorAffected = true;
          }
        }
      }

      if( !contentTemplateAffected )
      {
        this.ClearValue( ContentPresenter.ContentTemplateProperty );
      }

      if( !contentTemplateSelectorAffected )
      {
        this.ClearValue( ContentPresenter.ContentTemplateSelectorProperty );
      }
    }
        /// <summary>
        /// Builds collection of columns.
        /// </summary>
        /// <param name="parametersCount">Parameters count.</param>
        /// <param name="readedColumns">Readed columns.</param>
        /// <param name="columns">Colums.</param>
        private void _BuildColumnsCollection(int parametersCount,
                                             ArrayList readedColumns,
                                             ColumnCollection columns)
        {
            Debug.Assert(null != readedColumns);
            Debug.Assert(null != columns);

            columns.Clear();

            foreach (Column column in readedColumns)
            {
                if (!column.FieldName.Equals(DYNAMIC_FIELDS_ALIAS))
                    columns.Add(column);
                else
                {
                    string parameterColumnTitleFormat =
                        App.Current.FindString("ParameterColumnHeaderFormat");

                    for (int index = 0; index < parametersCount; ++index)
                    {
                        var col = new Column();
                        col.FieldName = _GetDynamicFieldName(index);
                        col.Title = string.Format(parameterColumnTitleFormat,
                            (0 == index) ? "" : (index + 1).ToString());
                        col.CellContentTemplate = column.CellContentTemplate;
                        col.CellEditor = column.CellEditor;
                        col.Width = column.Width;
                        col.MinWidth = column.MinWidth;
                        col.MaxWidth = column.MaxWidth;
                        col.CellValidationRules.Add(new ParameterValidationRule());
                        columns.Add(col);
                    }
                }
            }
        }
示例#21
0
        private void LoadCollectionView()
        {
            var vm = (MultipleWordAlignmentViewModel) DataContext;

            AlignmentGrid.Columns.Clear();

            var view = new DataGridCollectionView(vm.Words, typeof(MultipleWordAlignmentWordViewModel), false, false);
            view.ItemProperties.Add(new DataGridItemProperty("Variety", "Variety", typeof(VarietyViewModel)) {SortComparer = ProjectionComparer<VarietyViewModel>.Create(v => v.Name)});
            view.ItemProperties.Add(new DataGridItemProperty("StrRep", "StrRep", typeof(string)));
            view.ItemProperties.Add(new DataGridItemProperty("CognateSetIndex", "CognateSetIndex", typeof(int)));
            view.ItemProperties.Add(new DataGridItemProperty("Prefix", "Prefix", typeof(string)));
            for (int i = 0; i < vm.ColumnCount; i++)
                view.ItemProperties.Add(new DataGridItemProperty("Column" + i, string.Format("Columns[{0}]", i), typeof(string)));
            view.ItemProperties.Add(new DataGridItemProperty("Suffix", "Suffix", typeof(string)));
            if (vm.GroupByCognateSet)
            {
                Debug.Assert(view.GroupDescriptions != null);
                view.GroupDescriptions.Add(new DataGridGroupDescription("CognateSetIndex"));
            }
            vm.WordsView = view;

            var headerColumn = new Column {FieldName = "Variety"};
            DataGridControlBehaviors.SetIsRowHeader(headerColumn, true);
            DataGridControlBehaviors.SetAutoSize(headerColumn, true);
            DataGridControlBehaviors.SetAutoSizePadding(headerColumn, 18);
            AlignmentGrid.Columns.Add(headerColumn);

            object fontSizeObj = System.Windows.Application.Current.FindResource("PhoneticFontSize");
            Debug.Assert(fontSizeObj != null);
            var fontSize = (double) fontSizeObj;

            var prefixColumn = new Column {FieldName = "Prefix", ReadOnly = true, CanBeCurrentWhenReadOnly = false};
            DataGridControlBehaviors.SetAutoSize(prefixColumn, true);
            DataGridControlBehaviors.SetAutoSizePadding(prefixColumn, 9);
            DataGridControlBehaviors.SetFontSizeHint(prefixColumn, fontSize);
            AlignmentGrid.Columns.Add(prefixColumn);
            for (int i = 0; i < vm.ColumnCount; i++)
            {
                var column = new Column {FieldName = "Column" + i};
                DataGridControlBehaviors.SetAutoSize(column, true);
                DataGridControlBehaviors.SetAutoSizePadding(column, 9);
                DataGridControlBehaviors.SetFontSizeHint(column, fontSize);
                AlignmentGrid.Columns.Add(column);
            }
            var suffixColumn = new Column {FieldName = "Suffix", ReadOnly = true, CanBeCurrentWhenReadOnly = false};
            DataGridControlBehaviors.SetAutoSize(suffixColumn, true);
            DataGridControlBehaviors.SetAutoSizePadding(suffixColumn, 9);
            DataGridControlBehaviors.SetFontSizeHint(suffixColumn, fontSize);
            AlignmentGrid.Columns.Add(suffixColumn);

            AlignmentGrid.CurrentItem = null;
        }