Search code examples
silverlightsilverlight-4.0

How to wrap text in Silverlight DataGridTextColumn


I am trying to create a simple DataGrid in Silverlight 4 Beta but cannot seem to figure out how to get my Note column to wordwrap.

The table represents notes made on an order, so they will be of variable length. i want the 'Note' cell to expand vertically to fit the contents.

I've found numerous similar questions but no answer. Is there something new in Silverlight 4 that will address this?

    <data:DataGrid AutoGenerateColumns="False" Name="dataGrid1" IsReadOnly="True">
        <data:DataGrid.Columns>
            <data:DataGridTextColumn Header="Date" Binding="{Binding Date}" />
            <data:DataGridTextColumn Header="User" Binding="{Binding User}" />
            <data:DataGridTextColumn Header="Note" Binding="{Binding Note}"  />
        </data:DataGrid.Columns>
    </data:DataGrid>

Solution

  • Use a DataGridTemplateColumn instead of a text column. Have a TextBlock in there with it's TextWrapping set to true:

       <data:DataGrid x:Name="LayoutRoot" AutoGenerateColumns="False" IsReadOnly="True" RowDetailsVisibilityMode="Visible" >
            <data:DataGrid.Columns>
    
                <data:DataGridTextColumn Header="Date" Binding="{Binding Date}" />
                <data:DataGridTextColumn Header="User" Binding="{Binding User}" />
    
                <data:DataGridTemplateColumn Header="Note" Width="100">
                    <data:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                                <TextBlock TextWrapping="Wrap" Text="{Binding Note}" />
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>
                </data:DataGridTemplateColumn> 
    
            </data:DataGrid.Columns>
        </data:DataGrid>