private void GenerateColumns(System.Reflection.PropertyInfo[] propertyInfo, AutoFilterDataGrid.AutofilterDataGrid autofilterDataGrid, bool isSummaryRowGrid)
        {
            ObservableCollection<DataGridColumn> DataGridColumnList = new ObservableCollection<DataGridColumn>();
            foreach (System.Reflection.PropertyInfo column in propertyInfo)
            {
                //Avoid manually created columns from code
                if (ColumnsNotToGenerate.Contains(column.Name))
                {
                    continue;
                }

                bool isReadOnlyProperty = true;
                DataGridTemplateColumn dgCol = new DataGridTemplateColumn();

                // DataGridTextColumn dgCol = new DataGridTextColumn();
                dgCol.SortMemberPath = column.Name;
                dgCol.Header = GUIUtilityClass.GetTextFormRersources(column.Name, true);

                Binding binding = new Binding(column.Name);
                //dgCol.Binding = binding;
                dgCol.IsReadOnly = isReadOnlyProperty;

                Binding colorBinding = new Binding(column.Name);
                colorBinding.Converter = App.Current.Resources["NumberToColorConverter"] as NumberToColorConverter;

                dgCol.ClipboardContentBinding = new Binding(column.Name);

                string columnDataType = column.PropertyType.Name;

                FrameworkElementFactory textBlock = new FrameworkElementFactory(typeof(TextBlock));
                textBlock.SetValue(TextBlock.ForegroundProperty, new SolidColorBrush(Colors.Black));

                if (columnDataType.Contains("Int") || columnDataType.Contains("Float")
                    || columnDataType.Contains("Double") || columnDataType.Contains("Decimal")
                    || columnDataType.Contains("DateTime"))
                {
                    //dgCol.ElementStyle = FindResource("RightAlignTextBox") as Style;
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);

                    textBlock.SetBinding(TextBlock.ForegroundProperty, colorBinding);
                }
                else
                {
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Left);
                }

                if (column.Name.Equals("Symbol") && isSummaryRowGrid)
                {
                    textBlock.SetValue(TextBlock.FontWeightProperty, FontWeights.Bold);
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
                }
                else if (column.Name.Equals("Status"))
                {
                    Binding statusBackgroundColorBinding = new Binding(column.Name);
                    Binding isHitByMaxLossBackgroundColorBinding = new Binding("IsHitByMaxLoss");

                    MultiBinding statusBackgroundColorMultiBinding = new MultiBinding();
                    statusBackgroundColorMultiBinding.Bindings.Add(statusBackgroundColorBinding);
                    statusBackgroundColorMultiBinding.Bindings.Add(isHitByMaxLossBackgroundColorBinding);

                    statusBackgroundColorMultiBinding.Converter = App.Current.Resources["StrategyStatusToColorConverter"] as StrategyStatusToColorConverter;
                    statusBackgroundColorMultiBinding.ConverterParameter = "SYMBOLSTATUS";
                    textBlock.SetBinding(TextBlock.BackgroundProperty, statusBackgroundColorMultiBinding);
                    textBlock.SetValue(TextBlock.WidthProperty, 100.00);
                    textBlock.SetValue(TextBlock.ForegroundProperty, new SolidColorBrush(Colors.White));
                    dgCol.Width = 75;
                    dgCol.MinWidth = 75;
                }
                else if (column.Name.Equals("SeedRemaining"))
                {
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);

                    MultiBinding multiBinding = new MultiBinding();
                    multiBinding.Converter = App.Current.Resources["SeedRemainingThresholdToColorConverter"] as SeedRemainingThresholdToColorConverter;

                    Binding seedRemainingBinding = new Binding(column.Name);
                    multiBinding.Bindings.Add(seedRemainingBinding);

                    Binding seedThresholdBinding = new Binding();
                    seedThresholdBinding.Source = App.AppManager.StgEngine;
                    seedThresholdBinding.Path = new PropertyPath("SeedQtyThreshold");
                    multiBinding.Bindings.Add(seedThresholdBinding);

                    textBlock.SetBinding(TextBlock.BackgroundProperty, multiBinding);
                    binding.StringFormat = "###,##0";

                    textBlock.SetValue(TextBlock.PaddingProperty, new Thickness(250, 0, 0, 0));
                    dgCol.Width = 120;
                }
                else if (column.Name.Equals("PnL_Per_Share"))
                {
                    binding.StringFormat = "0.00000";
                    dgCol.ClipboardContentBinding.StringFormat = "0.00000";
                }
                else if (column.Name.Equals("PnL")
                    || (column.Name.Equals("UR_PnL")
                    || column.Name.Equals("Position_Amount")
                    || column.Name.Equals("Trading_Revenue")
                    || column.Name.Equals("Rebate_Revenue")
                    || column.Name.Equals("Max_Loss")))
                {
                    binding.StringFormat = "C2";
                    dgCol.ClipboardContentBinding.StringFormat = "C2";
                }
                else if (column.Name.Equals("Volume")
                    || column.Name.Equals("Position_Shares")
                    || column.Name.Equals("SeedRemaining"))
                {
                    binding.StringFormat = "###,##0";
                }
                else if (column.Name.Equals("IsAlreadyHadSameProcess"))
                {
                    if (isSummaryRowGrid)
                    {
                        autofilterDataGrid.Columns.Add(new DataGridTextColumn
                        {
                            Width = 30,
                            IsReadOnly = true,
                        });
                    }
                    else
                    {
                        FrameworkElementFactory chkBobBlock = new FrameworkElementFactory(typeof(CheckBox));
                        chkBobBlock.SetBinding(CheckBox.IsCheckedProperty, binding);

                        Binding visibilityBinding = new Binding(column.Name);
                        visibilityBinding.Converter = new QStrategyWPF.Converters.BooleanToVisibilityConverter();
                        chkBobBlock.SetBinding(CheckBox.VisibilityProperty, visibilityBinding);
                        chkBobBlock.SetValue(UIElement.IsHitTestVisibleProperty,false);
                        chkBobBlock.SetValue(UIElement.IsHitTestVisibleProperty, false);

                        dgCol.Width = 30;
                        dgCol.Header = " ";
                        dgCol.IsReadOnly = true;

                        FrameworkElementFactory factoryChk = new FrameworkElementFactory(typeof(Grid));
                        factoryChk.AppendChild(chkBobBlock);
                        DataTemplate cellTemplateChk = new DataTemplate();
                        cellTemplateChk.VisualTree = factoryChk;
                        dgCol.CellTemplate = cellTemplateChk;
                        autofilterDataGrid.Columns.Add(dgCol);

                        //autofilterDataGrid.Columns.Add(new DataGridCheckBoxColumn
                        //{
                        //    Width = 30,
                        //    IsReadOnly = true,
                        //    Header = " ",
                        //    Binding = new Binding(column.Name),

                        //    Visibility = new Binding(column.Name) { }
                        //});
                    }
                    continue;
                }

                textBlock.SetBinding(TextBlock.TextProperty, binding);

                FrameworkElementFactory factory = new FrameworkElementFactory(typeof(Grid));
                factory.AppendChild(textBlock);
                DataTemplate cellTemplate = new DataTemplate();
                cellTemplate.VisualTree = factory;
                dgCol.CellTemplate = cellTemplate;

                autofilterDataGrid.Columns.Add(dgCol);
            }

            ManageLastColumnMinWidth();
        }
        private void UpdateColumnsLayout(AutoFilterDataGrid.AutofilterDataGrid fltdg, AutoFilterDataGrid.AutofilterDataGrid fltdgSummary)
        {
            try
            {
                for (int colIndex = 0; (colIndex <= fltdg.Columns.Count && colIndex <= fltdgSummary.Columns.Count); colIndex++)
                {
                    if (((colIndex + 1) <= fltdg.Columns.Count) && ((colIndex + 1) <= fltdgSummary.Columns.Count) && (fltdgSummary.Columns[colIndex] != null) && (fltdg.Columns[colIndex] != null))
                    {
                        if (colIndex == 0)
                        {
                            fltdg.Columns[colIndex].Width = fltdgSummary.Columns[colIndex].Width;
                        }
                        else
                        {
                            if (fltdgSummary.Columns != null && fltdgSummary.Columns[colIndex] != null)
                            {
                                fltdgSummary.Columns[colIndex].Width = fltdg.Columns[colIndex].Width;
                            }
                        }

                        fltdgSummary.Columns[colIndex].Visibility = fltdg.Columns[colIndex].Visibility;
                        if (fltdgSummary.Columns[colIndex].DisplayIndex >= 0 && fltdg.Columns[colIndex].DisplayIndex >= 0)
                        {
                            fltdgSummary.Columns[colIndex].DisplayIndex = fltdg.Columns[colIndex].DisplayIndex;
                        }
                    }
                    else
                    {
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 3
0
        private void GenerateColumns(System.Reflection.PropertyInfo[] propertyInfo, AutoFilterDataGrid.AutofilterDataGrid autofilterDataGrid, bool isSummaryRowGrid)
        {
            ObservableCollection<DataGridColumn> DataGridColumnList = new ObservableCollection<DataGridColumn>();
            foreach (System.Reflection.PropertyInfo column in propertyInfo)
            {
                //Avoid manually created columns from code
                if (ColumnsNotToGenerate.Contains(column.Name))
                {
                    continue;
                }

                bool isReadOnlyProperty = true;
                DataGridTemplateColumn dgCol = new DataGridTemplateColumn();

                dgCol.SortMemberPath = column.Name;
                dgCol.Header = GUIUtilityClass.GetTextFormRersources(column.Name, true);

                Binding binding = new Binding(column.Name);
                dgCol.IsReadOnly = isReadOnlyProperty;

                dgCol.ClipboardContentBinding = new Binding(column.Name);

                string columnDataType = column.PropertyType.Name;

                FrameworkElementFactory textBlock = new FrameworkElementFactory(typeof(TextBlock));
                textBlock.SetValue(TextBlock.ForegroundProperty, new SolidColorBrush(Colors.Black));

                if (columnDataType.Contains("Int") || columnDataType.Contains("Float")
                    || columnDataType.Contains("Double") || columnDataType.Contains("Decimal")
                    || columnDataType.Contains("DateTime"))
                {
                    Binding colorBinding = new Binding(column.Name);
                    colorBinding.Converter = App.Current.Resources["NumberToColorConverter"] as NumberToColorConverter;
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
                    textBlock.SetBinding(TextBlock.ForegroundProperty, colorBinding);
                }
                else
                {
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Left);
                }

                if (column.Name.Equals("StrategyName") && isSummaryRowGrid)
                {
                    textBlock.SetValue(TextBlock.FontWeightProperty, FontWeights.Bold);
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
                }
                else if (column.Name.Equals("Status"))
                {
                    Binding statusBackgroundColorBinding = new Binding(column.Name);
                    statusBackgroundColorBinding.Converter = App.Current.Resources["EngineStatusToStatusColorConverter"] as EngineStatusToStatusColorConverter;
                    statusBackgroundColorBinding.ConverterParameter = "SUMMARYSTATUS";
                    textBlock.SetBinding(TextBlock.BackgroundProperty, statusBackgroundColorBinding);
                    textBlock.SetValue(TextBlock.WidthProperty, 60.00);
                    textBlock.SetValue(TextBlock.ForegroundProperty, new SolidColorBrush(Colors.White));
                }
                else if (column.Name.Equals("SeedRemaining"))
                {
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);

                    MultiBinding multiBinding = new MultiBinding();
                    multiBinding.Converter = App.Current.Resources["SeedRemainingThresholdToColorConverter"] as SeedRemainingThresholdToColorConverter;

                    Binding seedRemainingBinding = new Binding(column.Name);
                    multiBinding.Bindings.Add(seedRemainingBinding);

                    Binding seedThresholdBinding = new Binding();
                    seedThresholdBinding.Source = App.AppManager.StgEngine;
                    seedThresholdBinding.Path = new PropertyPath("SeedQtyThreshold");
                    multiBinding.Bindings.Add(seedThresholdBinding);

                    textBlock.SetBinding(TextBlock.BackgroundProperty, multiBinding);
                    binding.StringFormat = "###,##0";

                    textBlock.SetValue(TextBlock.PaddingProperty, new Thickness(50, 0, 0, 0));
                }
                else if (column.Name.Equals("SymbolTrading"))
                {
                    textBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
                }
                else if (column.Name.Equals("PnLPerShares"))
                {
                    binding.StringFormat = "0.00000";
                }
                else if (column.Name.Equals("PnL")
                    || column.Name.Equals("UR_PnL")
                    || column.Name.Equals("PositionAmount")
                    || column.Name.Equals("TradingRevenue")
                    || column.Name.Equals("RebateRevenue")
                    || column.Name.Equals("MaxLoss"))
                {
                    binding.StringFormat = "C2";
                }
                else if (column.Name.Equals("Volume") || column.Name.Equals("PositionShares"))
                {
                    binding.StringFormat = "###,##0";
                }
                textBlock.SetBinding(TextBlock.TextProperty, binding);

                FrameworkElementFactory factory = new FrameworkElementFactory(typeof(Grid));
                factory.AppendChild(textBlock);

                DataTemplate cellTemplate = new DataTemplate();
                cellTemplate.VisualTree = factory;
                dgCol.CellTemplate = cellTemplate;

                autofilterDataGrid.Columns.Add(dgCol);
            }
        }