Invoice # Invoice Amount
>>>1234 100.00
>>>1235 150.00
>>>2 250.00
>>><StackPanel> <DataGrid CanUserResizeColumns="True" AutoGenerateColumns="True"> <DataGrid.Columns> <DataGridTextColumn Header="Column1" x:Name="Column1" Width="100"></DataGridTextColumn> <DataGridTextColumn Header="Column2" x:Name="Column2" Width="200"></DataGridTextColumn> <DataGridTextColumn Header="Column3" x:Name="Column3" Width="100"></DataGridTextColumn> </DataGrid.Columns> </DataGrid> <StackPanel Orientation="Horizontal"> <TextBlock Background="Red" Width="{Binding ElementName=Column1,Path=ActualWidth}"></TextBlock> <TextBlock Background="Yellow" Width="{Binding ElementName=Column2,Path=ActualWidth}"></TextBlock> <TextBlock Background="Green" Width="{Binding ElementName=Column3,Path=ActualWidth}"></TextBlock> </StackPanel> </StackPanel>but if the user is allowed to change the column order then it would be more difficult (not even sure it's possible). One approach *might* be to use a Grid instead of the horizontal StackPanel and somehow bind the Grid column used by each TextBlock to the Column order of the DataGrid.