public void Apply_style_to_template_column() { Build(typeof(WaybillLine)); var grid = new DataGrid2(); var column = new DataGridTemplateColumn(); column.SetValue(FrameworkElement.NameProperty, "CertificateLink"); grid.Columns.Add(column); StyleHelper.ApplyStyles(typeof(WaybillLine), grid, resource); Assert.IsNotNull(column.CellStyle); }
private static DataGridColumn CreateColumn([NotNull] SolutionConfiguration solutionConfiguration) { Contract.Requires(solutionConfiguration != null); Contract.Ensures(Contract.Result <DataGridColumn>() != null); var path = @"ShouldBuild[" + solutionConfiguration.UniqueName + @"]"; var binding = new Binding(path) { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Mode = BindingMode.TwoWay }; var visualTree = new FrameworkElementFactory(typeof(CheckBox)); // ReSharper disable AssignNullToNotNullAttribute visualTree.SetValue(ToggleButton.IsThreeStateProperty, true); visualTree.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center); visualTree.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center); visualTree.SetBinding(ToggleButton.IsCheckedProperty, binding); // ReSharper restore AssignNullToNotNullAttribute var column = new DataGridTemplateColumn { IsReadOnly = true, SortMemberPath = path, CanUserResize = false, Header = new TextBlock { Text = solutionConfiguration.UniqueName, LayoutTransform = new RotateTransform(-90), }, CellTemplate = new DataTemplate(typeof(ProjectConfiguration)) { VisualTree = visualTree } }; column.SetIsFilterVisible(false); column.SetValue(_solutionConfigurationProperty, solutionConfiguration); return(column); }
private void CreateHeader(ColumnFieldCollection fields) { dataGrid.Columns.Clear(); //Int32Converter int32Conv = new Int32Converter(); int i = 0; foreach (ColumnField field in fields) { Type columnType = DataBase.GetTypeByField(field.Field); int width = field.Width; string columnName = DataBase.GetNameOfField(field.Field, false); switch (field.Field) { case Field.Rating: { DataGridRatingColumn nc = new DataGridRatingColumn(); System.Windows.DataTemplate template = new System.Windows.DataTemplate(); System.Windows.FrameworkElementFactory factoryRatingControl = new System.Windows.FrameworkElementFactory(typeof(RatingUserControl)); System.Windows.Data.Binding binding = new System.Windows.Data.Binding("Items[" + i + "]"); binding.Mode = BindingMode.TwoWay; //binding.Converter = int32Conv; factoryRatingControl.SetBinding(RatingUserControl.RatingProperty, binding); factoryRatingControl.SetValue(RatingUserControl.HorizontalAlignmentProperty, System.Windows.HorizontalAlignment.Left); factoryRatingControl.AddHandler(RatingUserControl.MouseLeftButtonDownEvent, new MouseButtonEventHandler(RatingCell_MouseLeftButtonDown)); nc.SetValue(DataGridExtensions.FieldProperty, field.Field); //factoryRatingControl.SetValue(RatingUserControl.ReadOnlyProperty, true); template.VisualTree = factoryRatingControl; nc.CanUserSort = true; nc.CellTemplate = template; //nc.CellEditingTemplate = template; nc.Header = columnName; nc.Width = width; // Auf Read-Only setzen, da wir das manuell machen (im MouseLeftButtonDown) nc.IsReadOnly = true; nc.SortMemberPath = "Items[" + i + "]"; dataGrid.Columns.Add(nc); break; } case Field.Comment: { DataGridTemplateColumn newMultilineColumn = new DataGridTemplateColumn(); newMultilineColumn.Width = field.Width; newMultilineColumn.Header = DataBase.GetNameOfField(field.Field); newMultilineColumn.SetValue(DataGridExtensions.FieldProperty, field.Field); DataTemplate multilineCelltemplate = this.FindResource("CommentTemplate") as DataTemplate; newMultilineColumn.CellTemplate = multilineCelltemplate; newMultilineColumn.CellEditingTemplate = multilineCelltemplate; dataGrid.Columns.Add(newMultilineColumn); break; } default: { DataGridMaxLengthTextColumn nc = new DataGridMaxLengthTextColumn(); nc.SetValue(DataGridExtensions.FieldProperty, field.Field); System.Windows.Data.Binding binding = new System.Windows.Data.Binding("Items[" + i + "]"); if (field.Field == Field.TotalLength) { binding.Converter = new Big3.Hitbase.Miscellaneous.LengthConverter(); } else if (field.Field == Field.Price) { binding.Converter = new PriceConverter(); } else if (field.Field == Field.Date) { binding.Converter = new DataBaseDateConverter(); binding.ConverterParameter = this.DataBase; } else if (field.Field == Field.AlbumType) { binding.Converter = new AlbumTypeConverter(); nc.IsReadOnly = true; } else if (IsUserFieldDateFormat(field.Field)) { binding.Converter = new UserFieldDateConverter(); } else if (DataBase.GetTypeByField(field.Field) == typeof(int)) { binding.Converter = new MyInt32Converter(); } else if (DataBase.GetTypeByField(field.Field) == typeof(bool)) { binding.Converter = new BoolConverter(); } nc.Binding = binding; nc.Header = columnName; nc.Width = width; if (DataBase.GetTypeByField(field.Field) == typeof(string)) { nc.MaxLength = DataBase.GetMaxStringLength(field.Field); } //nc.IsReadOnly = true; dataGrid.Columns.Add(nc); break; } } i++; } CurrentFields = fields; }
public static void RefreshGridView(DataGrid lst, GridDisplayConfiguration cfg, DependencyProperty sortProperty) { lst.Columns.Clear(); if (cfg.ShowIcon) { lst.Columns.Add(new DataGridTemplateColumn() { CellTemplate = (DataTemplate)lst.FindResource("iconCellTemplate") }); } if (cfg.ShowId) { var col = new DataGridTemplateColumn() { CellTemplate = (DataTemplate)lst.FindResource("idCellTemplate"), Header = "ID" }; lst.Columns.Add(col); // SetSortPropertyName(col, "ID"); } if (cfg.ShowName) { var col = new DataGridTemplateColumn() { CellTemplate = (DataTemplate)lst.FindResource("nameCellTemplate"), Header = "Name" }; lst.Columns.Add(col); // Not possible // SetSortPropertyName(col, "Name"); } foreach (var desc in cfg.Columns) { // TODO: use default controls after moving labeling to infrastructure var col = new DataGridTemplateColumn() { Header = desc.Header }; if (desc.RequestedWidthAbsolute != null) { col.Width = desc.RequestedWidthAbsolute.Value; } else if (desc.RequestedWidth != App.GUI.WidthHint.Default) { col.Width = TranslateWidth(desc.RequestedWidth); } var needEditor = desc.ControlKind != desc.GridPreEditKind; var editorFactory = needEditor ? new FrameworkElementFactory(typeof(ContentPresenter)) : null; var labelFactory = new FrameworkElementFactory(typeof(ContentPresenter)); switch (desc.Type) { case ColumnDisplayModel.ColumnType.MethodModel: if (needEditor) { editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(String.Format("Object.ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay }); } labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(String.Format("Object.ActionViewModelsByName[{0}]", desc.Name)), Mode = BindingMode.OneWay }); break; case ColumnDisplayModel.ColumnType.PropertyModel: { // Only database properties can be sorted // TODO: On the client side, maybe also Calculated Properties and ViewModels Properties if (sortProperty != null) { col.SetValue(sortProperty, desc.Name); } var tmp = desc.Name.Split('.').Select(i => String.Format("PropertyModelsByName[{0}]", i)); var binding = "Object." + string.Join(".Value.", tmp.ToArray()); if (needEditor) { editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(binding), Mode = BindingMode.OneWay }); } labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath(binding), Mode = BindingMode.OneWay }); break; } case ColumnDisplayModel.ColumnType.Property: if (needEditor) { editorFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath("Object." + desc.Name), Mode = BindingMode.OneWay }); } labelFactory.SetBinding(ContentPresenter.ContentProperty, new Binding() { Path = new PropertyPath("Object." + desc.Name), Mode = BindingMode.OneWay }); break; } if (needEditor) { editorFactory.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.ControlKind); editorFactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector")); editorFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch); } labelFactory.SetValue(VisualTypeTemplateSelector.RequestedKindProperty, desc.GridPreEditKind); labelFactory.SetValue(ContentPresenter.ContentTemplateSelectorProperty, lst.FindResource("defaultTemplateSelector")); labelFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch); col.CellTemplate = new DataTemplate() { VisualTree = labelFactory }; // set editing template only if different if (needEditor) { col.CellEditingTemplate = new DataTemplate() { VisualTree = editorFactory }; } lst.Columns.Add(col); } }