Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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;
        }
Example #4
0
        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);
            }
        }