I am trying to add a TextBox
(and ComboBox
when I get this working) to the default DataGridColumnHeader
and have done so like below. This is in an application ResourceDirectory
^:
<Style x:Key="DataGridColumnHeaderStyle_TextBox" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Themes:DataGridHeaderBorder Grid.Row="0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" IsClickable="{TemplateBinding CanUserSort}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}" Padding="{TemplateBinding Padding}" SortDirection="{TemplateBinding SortDirection}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
<TextBox Grid.Row="1" Text="" HorizontalAlignment="Stretch" BorderThickness="1" />
<Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left" Style="{StaticResource ColumnHeaderGripperStyle}"/>
<Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Style="{StaticResource ColumnHeaderGripperStyle}"/>
</Grid>
</Themes:DataGridHeaderBorder>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
In my Window
DataGrid
I have the following:
<DataGridTextColumn Header="PO Number" Binding="{Binding PO_Number}" HeaderStyle="{DynamicResource DataGridColumnHeaderStyle_TextBox}"/>
This looks the way I want at the moment, and the Header
text binds to the ContentPresenter
.
Question
How do I set it up so I can bind to the newly add TextBox (or any object for that matter) like this: HeaderTemplate.TextBox.Text="{Binding SomeSubTotalClass}"
<DataGridTextColumn Header="PO Number" HeaderTemplate.TextBox.Text="{Binding SomeSubTotalClass}" Binding="{Binding PO_Number}" HeaderStyle="{DynamicResource DataGridColumnHeaderStyle_TextBox}"/>