Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

Setting WPF Datagrid Column Header Background and Foreground in Datagrid's Resources

$
0
0
Hi,

I have a WPF Datagrid in my GUI in which every datagrid column's header background and foreground property are bound to displayindex property of parent column using converters like below:
<DataGridTemplateColumn Header="MyColumnHeaderBinding"
                                        DisplayIndex="{Binding DataSource.Col1DispIdx, Source={StaticResource DataContextProxy}, FallbackValue=1, Mode=TwoWay}"
                                        Width="{Binding DataSource.Col1Width, Source={StaticResource DataContextProxy}, FallbackValue=Auto, Mode=OneWay}"
                                        Visibility="{Binding DataSource.Col1Visible, Source={StaticResource DataContextProxy}, Converter={StaticResource BoolToVisConverter}, Mode=TwoWay}"
                                        SortMemberPath="Col1"><DataGridTemplateColumn.HeaderStyle><Style TargetType="{x:Type DataGridColumnHeader}"><Setter Property="VerticalContentAlignment" Value="Center"/><Setter Property="Foreground" Value="{Binding DataSource.Col1DispIdx, Source={StaticResource DataContextProxy}, ConverterParameter=CLRHF, Converter={StaticResource DataContextProxy}}"></Setter><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type DataGridColumnHeader}"><Grid><Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"
                                                         Background="{TemplateBinding Background}" IsClickable="{TemplateBinding CanUserSort}"
                                                         IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}"
                                                         Padding="0" SortDirection="{TemplateBinding SortDirection}"
                                                         SeparatorBrush="{TemplateBinding SeparatorBrush}"
                                                         SeparatorVisibility="{TemplateBinding SeparatorVisibility}"><Border Background="{Binding DataSource.Col1DispIdx, Source={StaticResource DataContextProxy}, ConverterParameter=CLRHB, Converter={StaticResource DataContextProxy}}" Margin="0,0,0,0"><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Border>  </Themes:DataGridHeaderBorder><Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left" Style="{StaticResource ColumnHeaderGripperStyle}"/><Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Style="{StaticResource ColumnHeaderGripperStyle}"/></Grid></ControlTemplate></Setter.Value></Setter></Style></DataGridTemplateColumn.HeaderStyle></DataGridTemplateColumn>

My requirement is that I need to put this <DataGridTemplateColumn.HeaderStyle> XAML markup section for every column at one place in <DataGrid.Resources> section. Everything is working fine except Foreground and Background properties binding in bold when I tried to put this  <DataGridTemplateColumn.HeaderStyle> in <DataGrid.Resources>. I have DatagridTemplateColumn and DataGridTextColumn in my Datagrid in XAML. Every column's display index is bind to different property like "Col1DispIdx","Col2DispIdx", "Col3DispIdx" etc...

So, please advise to achieve above functionality asap.

Regards,
Pratham

Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>