Hello,
we want to set an initial column width and therefore need to activate text wrapping in column headers. I found some messages about this problem in the forum but no solution how to realize that.
Up to now I tried the following:
1. I create a TextColumn in code behind:
TextColumn col = new TextColumn();col.Key = "[rg" + iRG.ToString() + "fct" + iF.ToString() + "]";col.HeaderText = _selFacts[iF - 1].Name;col.Width = new ColumnWidth(100, false);col.HeaderTemplate = (DataTemplate)FindResource("HeaderCellTemplateForTextWrapping");
The Key is created dynamically and the HeaderText is the name of a Fact (e.g. "Turnover [abs.]"). I set the HeaderTemplate.
2. I define the DataTemplate in XAML:
<DataTemplate x:Key="HeaderCellTemplateForTextWrapping" DataType="{x:Type igPrim:HeaderCellControl}"> <TextBlock Text="{Binding HeaderTextProperty}" TextWrapping="WrapWithOverflow" /></DataTemplate>
I alsol tried setting the Datatype to "ig:TextColumn" and tried different Bindings like:
Text="{Binding Path=TextColumn.HeaderText}" Text="{Binding Path=HeaderText}" Text="{Binding Path=HeaderTextProperty}" Text="{Binding Path=TextColumn.HeaderTextProperty}
Up to now nothing worked. I only get empty header cells. Could you please tell me what I must do to get text wrapping?
Regards
I have been looking into your requirement and the easiest way to achieve text wrapping of the header of the columns in the XamGrid is to define a header template with a TextBlock and set its ‘TextWrapping’ property. After that you will set this header template to the columns in the ‘ColumnLayoutAssigned’ event of the XamGrid like e.g. :
<DataTemplate>
<TextBlock Text="{Binding}"
TextWrapping="Wrap"/>
</DataTemplate>
…
private void xamGrid1_ColumnLayoutAssigned(object sender, ColumnLayoutAssignedEventArgs e)
{
foreach (var item in e.ColumnLayout.Columns)
item.HeaderTemplate = this.Resources["header"] as DataTemplate;
}
I am attaching a sample application(xamGridHeaderTextWrapping.zip) that shows this approach.
Please let me know, if you need any further assistance on this matter.
Hello Yanko,
thank you for the sample.
According to your sample I changed my application, but I got the same result I already achieved. In the header I only see the key.
This is not what I need. I create all TextColumns dynamically and therefore each column must get an unique key. The text shown in the column header, which I need to wrap, is asigned to the property "HeaderText".
Could you please show me a solution for this constellation?
thank you very much. That's exactly what we need!
Thank you for your reply. I have been looking into your requirement and you need to define the DataTemplate like :
<DataTemplate x:Key="header">
<TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=igPrim:HeaderCellControl, AncestorLevel=1}, Path=Column.HeaderText}"
I am attaching a modified version of my sample application(xamGridHeaderTextWrapping2.zip) that shows this approach.
Let me know, if you need any further assistance on this matter.