Quantcast
Viewing all articles
Browse latest Browse all 27072

Accessing and renaming a textBlock inside a Datagrid columnHeader

I was using the VisualTreeHelper trying to locate a textBlock inside the datagrid columnHeaders. I have just learnt that : "The Header object of the DataGridColumn is actually the visible header of that column, whatever you set it to be. DataGridColumn is not part of the Visual Tree so there is not direct way to access the DataGridColumnHeader for it (we can't even be sure it exists yet)... " This has set me back by a couple of days. I tried to convert the suggested code to vb.net in order to use it but I don't seem to get it right. The code in c# is :
Code:


ataGridColumnHeader headerObj = GetColumnHeaderFromColumn(column);

private DataGridColumnHeader GetColumnHeaderFromColumn(DataGridColumn column)
{
    // dataGrid is the name of your DataGrid. In this case Name="dataGrid"
    List<DataGridColumnHeader> columnHeaders = GetVisualChildCollection<DataGridColumnHeader>(dataGrid);
    foreach (DataGridColumnHeader columnHeader in columnHeaders)
    {
        if (columnHeader.Column == column)
        {
            return columnHeader;
        }
    }
    return null;
}

public List<T> GetVisualChildCollection<T>(object parent) where T : Visual
{
    List<T> visualCollection = new List<T>();
    GetVisualChildCollection(parent as DependencyObject, visualCollection);
    return visualCollection;
}

private void GetVisualChildCollection<T>(DependencyObject parent, List<T> visualCollection) where T : Visual
{
    int count = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < count; i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(parent, i);
        if (child is T)
        {

I ask someone who understand this c# code to apply it in my scenario shown below. I want to access in order to rename the textblock 'columnHeaderName'. How can I do this?

Code:

<Datagrid>
        <Datagrid.Columns>
 <DatagridTemplateColumn Header="header1" Width="100">
<DatagridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Name="columnHeaderName" Text="columnHeaderText" Width="100"/>
</DataTemplate>

</..........>

</Datagrid>

Thanks for helping.

Viewing all articles
Browse latest Browse all 27072

Trending Articles



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