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; } }
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); } }