Click here to Skip to main content
15,888,351 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
C#
DataGridColumnHeader header = new DataGridColumnHeader();
            Style headerstyle = new System.Windows.Style();
            headerstyle.TargetType = typeof(DataGridColumnHeader);
            Setter setter = new Setter();        
            Setter setter1 = new Setter();
            Setter setter2 = new Setter();
            setter.Property = FontSizeProperty;
            FontSize = 10;
            setter.Value = FontSize;
            headerstyle.Setters.Add(setter);
            setter1.Property = ForegroundProperty;
            Foreground = Brushes.BlueViolet;
            setter1.Value = Foreground;
            headerstyle.Setters.Add(setter1);
            Setter setter3 = new Setter();
            LinearGradientBrush lb = new LinearGradientBrush();
            Point startpoint = new Point(0.5, 0);
            Point endpoint = new Point(1, 1);
            lb.StartPoint = startpoint;
            lb.EndPoint = endpoint;
            GradientStop gst = new GradientStop();
            lb.GradientStops.Add(new GradientStop(Colors.Black, 0.0));
            lb.GradientStops.Add(new GradientStop(Colors.Orange, 0.5));
            lb.GradientStops.Add(new GradientStop(Colors.Green, 1.0));
            setter3.Property = BackgroundProperty;
            setter3.Value = lb;
            headerstyle.Setters.Add(setter3);

            dataGrid1.ColumnHeaderStyle = headerstyle;


what is wrong with this . while executing it gives error saying target mismatch .

DataGridColumnHeader' TargetType does not match type of element 'DataGridColumnHeader'.

i am attaching the corresponding XAML file

HTML
<dg:DataGrid.Columns>

                          <dg:DataGridTextColumn Header="AuthorID" FontWeight="Black" Foreground="Red"
                                     FontSize="16" FontStyle="Italic"
                                     CanUserReorder="True"
                                     CanUserSort="True" SortDirection="Ascending" Binding="{Binding Path=AuthorID}">
                              <dg:DataGridTextColumn.ElementStyle>
                                  <Style TargetType="TextBlock">
                                      <Setter Property="TextAlignment" Value="Center" />
                                  </Style>
                              </dg:DataGridTextColumn.ElementStyle>
                              <dg:DataGridTextColumn.EditingElementStyle>
                                  <Style TargetType="TextBox">
                                      <Setter Property="TextWrapping" Value="Wrap" />
                                      <Setter Property="AcceptsReturn" Value="true" />
                                  </Style>
                              </dg:DataGridTextColumn.EditingElementStyle>
                              <dg:DataGridColumn.HeaderStyle>

                                  <Style TargetType="{x:Type dg:DataGridColumnHeader}">
                                      <Setter Property="Background" >
                                          <Setter.Value>
                                              <LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0" SpreadMethod="Pad">
                                                  <GradientStop Color="Bisque" Offset="0" />
                                                  <GradientStop Color="Cyan" Offset="1" />
                                              </LinearGradientBrush>
                                          </Setter.Value>
                                      </Setter>
                                      <Setter Property="Foreground" Value="Black" />
                                      <Setter Property="FontSize" Value="20" />
                                      <Setter Property="HorizontalContentAlignment" Value="Center" />
                                      <Setter Property="BorderBrush" Value="yellow"/>
                                      <Setter Property="BorderThickness" Value="2,2,2,2"/>

                                  </Style>
                              </dg:DataGridColumn.HeaderStyle>
                          </dg:DataGridTextColumn>
                          <dg:DataGridTextColumn Header="FirstName" FontWeight="Bold" Foreground="DarkGreen" FontSize="16" FontStyle="Italic"
                                     CanUserSort="False" Binding="{Binding Path=FirstName}">
                              <dg:DataGridTextColumn.ElementStyle>
                                  <Style TargetType="TextBlock">
                                      <Setter Property="TextAlignment" Value="Center" />
                                  </Style>
                              </dg:DataGridTextColumn.ElementStyle>
                              <dg:DataGridTextColumn.EditingElementStyle>
                                  <Style TargetType="TextBox">
                                      <Setter Property="TextWrapping" Value="Wrap" />
                                      <Setter Property="AcceptsReturn" Value="true" />
                                  </Style>
                              </dg:DataGridTextColumn.EditingElementStyle>
                              <dg:DataGridColumn.HeaderStyle>
                                  <Style TargetType="{x:Type dg:DataGridColumnHeader}">

                                      <Setter Property="Background" >
                                          <Setter.Value>
                                              <LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0" SpreadMethod="Pad">
                                                  <GradientStop Color="Lavender" Offset="0" />
                                                  <GradientStop Color="BlanchedAlmond" Offset="1" />
                                              </LinearGradientBrush>
                                          </Setter.Value>
                                      </Setter>
                                      <Setter Property="Foreground" Value="Black" />
                                      <Setter Property="FontSize" Value="20" />
                                      <Setter Property="HorizontalContentAlignment" Value="Center" />
                                      <Setter Property="Width" Value="Auto" />
                                      <Setter Property="BorderBrush" Value="Yellow"/>
                                      <Setter Property="BorderThickness" Value="2,2,2,2"/>
                                  </Style>
                              </dg:DataGridColumn.HeaderStyle>
                          </dg:DataGridTextColumn>
                          <dg:DataGridTextColumn Header="LastName" FontWeight="Bold" Foreground="OrangeRed" FontSize="16" FontStyle="Italic"
                                     CanUserSort="False" Binding="{Binding Path=LastName}">
                              <dg:DataGridTextColumn.ElementStyle>
                                  <Style TargetType="TextBlock">
                                      <Setter Property="TextAlignment" Value="Center" />
                                  </Style>
                              </dg:DataGridTextColumn.ElementStyle>
                              <dg:DataGridTextColumn.EditingElementStyle>
                                  <Style TargetType="TextBox">
                                      <Setter Property="TextWrapping" Value="Wrap" />
                                      <Setter Property="AcceptsReturn" Value="true" />
                                  </Style>
                              </dg:DataGridTextColumn.EditingElementStyle>
                              <dg:DataGridColumn.HeaderStyle>
                                  <Style TargetType="{x:Type dg:DataGridColumnHeader}">
                                      <Setter Property="Background" >
                                          <Setter.Value>
                                              <LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0" SpreadMethod="Pad">
                                                  <GradientStop Color="Brown" Offset="0" />
                                                  <GradientStop Color="White" Offset="1" />
                                              </LinearGradientBrush>
                                          </Setter.Value>
                                      </Setter>
                                      <Setter Property="Foreground" Value="Black" />
                                      <Setter Property="FontSize" Value="20" />
                                      <Setter Property="HorizontalContentAlignment" Value="Center" />
                                      <Setter Property="Width" Value="Auto" />
                                      <Setter Property="BorderBrush" Value="Yellow"/>
                                      <Setter Property="BorderThickness" Value="2,2,2,2"/>
                                  </Style>
                              </dg:DataGridColumn.HeaderStyle>
                          </dg:DataGridTextColumn>
                          <dg:DataGridTemplateColumn Header="DOB" MinWidth="100" CanUserSort="False">
                              <dg:DataGridTemplateColumn.HeaderStyle>
                                  <Style TargetType="{x:Type dg:DataGridColumnHeader}">
                                      <Setter Property="Background" >
                                          <Setter.Value>
                                              <LinearGradientBrush EndPoint="1,.1" StartPoint="0.5,1" SpreadMethod="Pad">
                                                  <GradientStop Color="Orange" Offset="1" />
                                                  <GradientStop Color="Thistle" Offset="0" />
                                              </LinearGradientBrush>
                                          </Setter.Value>
                                      </Setter>
                                      <Setter Property="Foreground" Value="Black" />
                                      <Setter Property="FontSize" Value="20" />
                                      <Setter Property="HorizontalContentAlignment" Value="Center" />
                                      <Setter Property="Width" Value="Auto" />
                                      <Setter Property="BorderBrush" Value="yellow"/>
                                      <Setter Property="BorderThickness" Value="2,2,2,2"/>
                                  </Style>
                              </dg:DataGridTemplateColumn.HeaderStyle>
                              <dg:DataGridTemplateColumn.CellEditingTemplate>
                                  <DataTemplate>
                                      <dg:DatePicker SelectedDate="{Binding DOB}" SelectedDateFormat="Short" CalendarStyle="DynamicResource CalenderControlTemplate" removed="Yellow" />
                                  </DataTemplate>
                              </dg:DataGridTemplateColumn.CellEditingTemplate>
                              <dg:DataGridTemplateColumn.CellTemplate>
                                  <DataTemplate>
                                      <TextBlock Text="{Binding DOB, StringFormat=d}" Foreground="DarkTurquoise" HorizontalAlignment="Center" />
                                  </DataTemplate>
                              </dg:DataGridTemplateColumn.CellTemplate>
                          </dg:DataGridTemplateColumn>
                          <dg:DataGridCheckBoxColumn Header="Pass/Fail" Binding="{Binding Pass}">
                              <dg:DataGridColumn.HeaderStyle>
                                  <Style TargetType="{x:Type dg:DataGridColumnHeader}">
                                      <Setter Property="Background" >
                                          <Setter.Value>
                                              <LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0" SpreadMethod="Pad">
                                                  <GradientStop Color="#FFC2D6F6" Offset="0" />
                                                  <GradientStop Color="White" Offset="1" />
                                              </LinearGradientBrush>
                                          </Setter.Value>
                                      </Setter>
                                      <Setter Property="Foreground" Value="Black" />
                                      <Setter Property="FontSize" Value="20" />
                                      <Setter Property="HorizontalContentAlignment" Value="Center" />
                                      <Setter Property="Width" Value="Auto" />
                                      <Setter Property="BorderBrush" Value="Yellow"/>
                                      <Setter Property="BorderThickness" Value="2,2,2,2"/>
                                  </Style>
                              </dg:DataGridColumn.HeaderStyle>
                          </dg:DataGridCheckBoxColumn>
                          <dg:DataGridTextColumn Header="Nationality" FontWeight="Bold" Foreground="SandyBrown"
                                     FontSize="16" FontStyle="Italic" CanUserSort="False"
                                     Binding="{Binding Path= Nationality}" Width="Auto">
                              <dg:DataGridTextColumn.ElementStyle>
                                  <Style TargetType="TextBlock">
                                      <Setter Property="TextAlignment" Value="Center" />
                                  </Style>
                              </dg:DataGridTextColumn.ElementStyle>
                              <dg:DataGridTextColumn.EditingElementStyle>
                                  <Style TargetType="TextBox">
                                      <Setter Property="TextWrapping" Value="Wrap" />
                                      <Setter Property="AcceptsReturn" Value="true" />
                                  </Style>
                              </dg:DataGridTextColumn.EditingElementStyle>
                              <dg:DataGridColumn.HeaderStyle>
                                  <Style TargetType="{x:Type dg:DataGridColumnHeader}">
                                      <Setter Property="Background" >
                                          <Setter.Value>
                                              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" SpreadMethod="Pad">
                                                  <GradientStop Color="Blue" Offset="0" />
                                                  <GradientStop Color="White" Offset="1" />
                                              </LinearGradientBrush>
                                          </Setter.Value>
                                      </Setter>
                                      <Setter Property="Foreground" Value="Black" />
                                      <Setter Property="FontSize" Value="20" />
                                      <Setter Property="HorizontalContentAlignment" Value="Center" />
                                      <Setter Property="Width" Value="Auto" />
                                      <Setter Property="BorderBrush" Value="Yellow"/>
                                      <Setter Property="BorderThickness" Value="2,2,2,2"/>
                                  </Style>
                              </dg:DataGridColumn.HeaderStyle>
                          </dg:DataGridTextColumn>
                      </dg:DataGrid.Columns>


regards iqbal
Posted
Updated 27-Jan-12 2:51am
v2

Hi when I run your code it works perfectly. Is it not because you may be setting the style for the DatagridColumnHeader in XAML as well? And when are you initialising this code? Can you maybe attach your xaml for your datagrid control please.
 
Share this answer
 
Comments
[no name] 27-Jan-12 8:41am    
Yes I was setting the style in XAML.but I want to change the style during run time, to different various style(in fact a user shall be able to change looks of the DataGrid )
Remove your namespace reference of dg: and add this xaml
C#
<datagrid autogeneratecolumns="False" height="200" horizontalalignment="Left" margin="153,84,0,0" name="dataGrid1" verticalalignment="Top" width="200">
          <datagrid.columns>

              <datagridtextcolumn header="AuthorID" fontweight="Black" foreground="Red">
                                     FontSize="16" FontStyle="Italic"
                                     CanUserReorder="True"
                                     CanUserSort="True" SortDirection="Ascending" Binding="{Binding Path=AuthorID}">
                  <datagridtextcolumn.elementstyle>
                      <style targettype="TextBlock">
                          <setter property="TextAlignment" value="Center" />
                      </style>
                  </datagridtextcolumn.elementstyle>
                  <datagridtextcolumn.editingelementstyle>
                      <style targettype="TextBox">
                          <setter property="TextWrapping" value="Wrap" />
                          <setter property="AcceptsReturn" value="true" />
                      </style>
                  </datagridtextcolumn.editingelementstyle>
                  <datagridcolumn.headerstyle>

                      <style targettype="{x:Type DataGridColumnHeader}">
                          <setter property="Background">
                              <setter.value>
                                  <lineargradientbrush endpoint="1,1" startpoint="0.5,0" spreadmethod="Pad">
                                      <gradientstop color="Bisque" offset="0" />
                                      <gradientstop color="Cyan" offset="1" />
                                  </lineargradientbrush>
                              </setter.value>
                          </setter>
                          <setter property="Foreground" value="Black" />
                          <setter property="FontSize" value="20" />
                          <setter property="HorizontalContentAlignment" value="Center" />
                          <setter property="BorderBrush" value="yellow" />
                          <setter property="BorderThickness" value="2,2,2,2" />

                      </style>
                  </datagridcolumn.headerstyle>
              </datagridtextcolumn>
              <datagridtextcolumn header="FirstName" fontweight="Bold" foreground="DarkGreen" fontsize="16" fontstyle="Italic">
                                     CanUserSort="False" Binding="{Binding Path=FirstName}">
                  <datagridtextcolumn.elementstyle>
                      <style targettype="TextBlock">
                          <setter property="TextAlignment" value="Center" />
                      </style>
                  </datagridtextcolumn.elementstyle>
                  <datagridtextcolumn.editingelementstyle>
                      <style targettype="TextBox">
                          <setter property="TextWrapping" value="Wrap" />
                          <setter property="AcceptsReturn" value="true" />
                      </style>
                  </datagridtextcolumn.editingelementstyle>
                  <datagridcolumn.headerstyle>
                      <style targettype="{x:Type DataGridColumnHeader}">

                          <setter property="Background">
                              <setter.value>
                                  <lineargradientbrush endpoint="1,1" startpoint="0.5,0" spreadmethod="Pad">
                                      <gradientstop color="Lavender" offset="0" />
                                      <gradientstop color="BlanchedAlmond" offset="1" />
                                  </lineargradientbrush>
                              </setter.value>
                          </setter>
                          <setter property="Foreground" value="Black" />
                          <setter property="FontSize" value="20" />
                          <setter property="HorizontalContentAlignment" value="Center" />
                          <setter property="Width" value="Auto" />
                          <setter property="BorderBrush" value="Yellow" />
                          <setter property="BorderThickness" value="2,2,2,2" />
                      </style>
                  </datagridcolumn.headerstyle>
              </datagridtextcolumn>
              <datagridtextcolumn header="LastName" fontweight="Bold" foreground="OrangeRed" fontsize="16" fontstyle="Italic">
                                     CanUserSort="False" Binding="{Binding Path=LastName}">
                  <datagridtextcolumn.elementstyle>
                      <style targettype="TextBlock">
                          <setter property="TextAlignment" value="Center" />
                      </style>
                  </datagridtextcolumn.elementstyle>
                  <datagridtextcolumn.editingelementstyle>
                      <style targettype="TextBox">
                          <setter property="TextWrapping" value="Wrap" />
                          <setter property="AcceptsReturn" value="true" />
                      </style>
                  </datagridtextcolumn.editingelementstyle>
                  <datagridcolumn.headerstyle>
                      <style targettype="{x:Type DataGridColumnHeader}">
                          <setter property="Background">
                              <setter.value>
                                  <lineargradientbrush endpoint="1,1" startpoint="0.5,0" spreadmethod="Pad">
                                      <gradientstop color="Brown" offset="0" />
                                      <gradientstop color="White" offset="1" />
                                  </lineargradientbrush>
                              </setter.value>
                          </setter>
                          <setter property="Foreground" value="Black" />
                          <setter property="FontSize" value="20" />
                          <setter property="HorizontalContentAlignment" value="Center" />
                          <setter property="Width" value="Auto" />
                          <setter property="BorderBrush" value="Yellow" />
                          <setter property="BorderThickness" value="2,2,2,2" />
                      </style>
                  </datagridcolumn.headerstyle>
              </datagridtextcolumn>
              <datagridtemplatecolumn header="DOB" minwidth="100" canusersort="False">
                  <datagridtemplatecolumn.headerstyle>
                      <style targettype="{x:Type DataGridColumnHeader}">
                          <setter property="Background">
                              <setter.value>
                                  <lineargradientbrush endpoint="1,.1" startpoint="0.5,1" spreadmethod="Pad">
                                      <gradientstop color="Orange" offset="1" />
                                      <gradientstop color="Thistle" offset="0" />
                                  </lineargradientbrush>
                              </setter.value>
                          </setter>
                          <setter property="Foreground" value="Black" />
                          <setter property="FontSize" value="20" />
                          <setter property="HorizontalContentAlignment" value="Center" />
                          <setter property="Width" value="Auto" />
                          <setter property="BorderBrush" value="yellow" />
                          <setter property="BorderThickness" value="2,2,2,2" />
                      </style>
                  </datagridtemplatecolumn.headerstyle>
                  <datagridtemplatecolumn.celleditingtemplate>
                      <datatemplate>
                          <datepicker selecteddate="{Binding DOB}" selecteddateformat="Short" calendarstyle="DynamicResource CalenderControlTemplate" />
                      </datatemplate>
                  </datagridtemplatecolumn.celleditingtemplate>
                  <datagridtemplatecolumn.celltemplate>
                      <datatemplate>
                          <textblock text="{Binding DOB, StringFormat=d}" foreground="DarkTurquoise" horizontalalignment="Center" />
                      </datatemplate>
                  </datagridtemplatecolumn.celltemplate>
              </datagridtemplatecolumn>
              <datagridcheckboxcolumn header="Pass/Fail" binding="{Binding Pass}">
                  <datagridcolumn.headerstyle>
                      <style targettype="{x:Type DataGridColumnHeader}">
                          <setter property="Background">
                              <setter.value>
                                  <lineargradientbrush endpoint="1,1" startpoint="0.5,0" spreadmethod="Pad">
                                      <gradientstop color="#FFC2D6F6" offset="0" />
                                      <gradientstop color="White" offset="1" />
                                  </lineargradientbrush>
                              </setter.value>
                          </setter>
                          <setter property="Foreground" value="Black" />
                          <setter property="FontSize" value="20" />
                          <setter property="HorizontalContentAlignment" value="Center" />
                          <setter property="Width" value="Auto" />
                          <setter property="BorderBrush" value="Yellow" />
                          <setter property="BorderThickness" value="2,2,2,2" />
                      </style>
                  </datagridcolumn.headerstyle>
              </datagridcheckboxcolumn>
              <datagridtextcolumn header="Nationality" fontweight="Bold" foreground="SandyBrown">
                                     FontSize="16" FontStyle="Italic" CanUserSort="False"
                                     Binding="{Binding Path= Nationality}" Width="Auto">
                  <datagridtextcolumn.elementstyle>
                      <style targettype="TextBlock">
                          <setter property="TextAlignment" value="Center" />
                      </style>
                  </datagridtextcolumn.elementstyle>
                  <datagridtextcolumn.editingelementstyle>
                      <style targettype="TextBox">
                          <setter property="TextWrapping" value="Wrap" />
                          <setter property="AcceptsReturn" value="true" />
                      </style>
                  </datagridtextcolumn.editingelementstyle>
                  <datagridcolumn.headerstyle>
                      <style targettype="{x:Type DataGridColumnHeader}">
                          <setter property="Background">
                              <setter.value>
                                  <lineargradientbrush endpoint="0.5,1" startpoint="0.5,0" spreadmethod="Pad">
                                      <gradientstop color="Blue" offset="0" />
                                      <gradientstop color="White" offset="1" />
                                  </lineargradientbrush>
                              </setter.value>
                          </setter>
                          <setter property="Foreground" value="Black" />
                          <setter property="FontSize" value="20" />
                          <setter property="HorizontalContentAlignment" value="Center" />
                          <setter property="Width" value="Auto" />
                          <setter property="BorderBrush" value="Yellow" />
                          <setter property="BorderThickness" value="2,2,2,2" />
                      </style>
                  </datagridcolumn.headerstyle>
              </datagridtextcolumn>
          </datagrid.columns>
      </datagrid>


I think the problem lies in your xaml with the namespace declaration of:
C#
dg:DataGridTextColumn

what is
C#
dg:
defined as in you xaml.

Try excluding it and see now if you don't get the problem. because it seems to work fine for me.

Regards
 
Share this answer
 
Comments
[no name] 1-Feb-12 2:36am    
dg: corresponds to WPFToolkit

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900