Exemple #1
0
        public void BuildDataGrid(IList <ColumnItem> columns)
        {
            if (_dg == null)
            {
                return;
            }

            if (columns != null)
            {
                foreach (ColumnItem item in columns)
                {
                    DataGridColumn col;
                    if (item.Field.Equals("IsMarked"))
                    {
                        DataGridCheckBoxColumn cbCol = new DataGridCheckBoxColumn();
                        cbCol.IsReadOnly = false;
                        col          = cbCol;
                        cbCol.Header = item.Header;
                        Binding bind = new Binding(item.Field)
                        {
                            Mode = BindingMode.TwoWay
                        };
                        cbCol.Binding = bind;
                    }
                    else
                    {
                        DataGridTextColumn textCol = new DataGridTextColumn();
                        col            = textCol;
                        textCol.Header = item.Header;
                        Binding bind = new Binding(item.Field)
                        {
                            Mode = BindingMode.OneWay
                        };
                        bind.ConverterCulture = System.Globalization.CultureInfo.GetCultureInfo(Properties.Resources.CultureName);
                        if (!String.IsNullOrWhiteSpace(item.StringFormat))
                        {
                            bind.StringFormat = item.StringFormat;
                        }
                        textCol.Binding = bind;
                    }
                    if (item.Alignment == CellAlignment.CENTER && _centerCellStyle != null)
                    {
                        col.CellStyle = _centerCellStyle;
                    }
                    if (item.MinWidth != null)
                    {
                        col.MinWidth = item.MinWidth.Value;
                    }
                    if (item.Width != null)
                    {
                        col.Width = item.Width.Value;
                    }

                    col.Visibility = item.IsVisible ? Visibility.Visible : Visibility.Collapsed;

                    //Add column to datagrid
                    _dg.Columns.Add(col);

                    Control filterControl = null;
                    if (_txtSearchPanel != null)
                    {
                        Binding widthBind = new Binding()
                        {
                            Path               = new PropertyPath("ActualWidth"),
                            Source             = col,
                            Mode               = BindingMode.OneWay,
                            Converter          = _adjConv,
                            ConverterParameter = "-2"
                        };

                        LogItemProperty     prop = (LogItemProperty)Enum.Parse(typeof(LogItemProperty), item.Field);
                        IPropertyFilterInfo info = FilterManager.CreateFilterInfo(prop, _filterChanged);
                        info.Control.SetBinding(TextBox.WidthProperty, widthBind);
                        info.Control.ToolTip    = String.Format(Resources.FilteredGridManager_BuildDataGrid_FilterTextBox_Tooltip, item.Header);
                        info.Control.Tag        = info.Control.ToolTip.ToString().ToLower();
                        info.Control.Visibility = item.IsVisible ? Visibility.Visible : Visibility.Collapsed;
                        info.Control.Name       = getTextBoxName(item.Field);

                        _txtSearchPanel.Children.Add(info.Control);
                        filterControl = info.Control;
                        Filter.Add(prop, info.Filter);
                    }
                    columnMap.Add(item.Header, new Tuple <DataGridColumn, Control, string>(col, filterControl, item.Field));
                }
            }

            _dg.ColumnReordered += OnColumnReordered;
        }