How to make a grid in a DataTemplate for a ItemTemplate auto-size to ListBox width?

Posted by Robert Iagar on Stack Overflow See other posts from Stack Overflow or by Robert Iagar
Published on 2010-04-18T08:55:02Z Indexed on 2010/04/18 9:03 UTC
Read the original article Hit count: 424

Filed under:
|
|
|
|

So I have the following DataTemplate for a ListBox.ItemTemplate:

<DataTemplate x:Key="Tweet">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="50"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Image 
                        Grid.Column="0"
                        Source="{Binding ProfileImageURL}"
                        Width="50" Height="50"/>
                    <Grid Grid.Column="1">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock
                            Grid.Row="0"
                            FontSize="15"
                            FontWeight="Bold"
                            Text="{Binding User}"/>
                        <TextBlock
                            Grid.Row="1" TextWrapping="Wrap"
                            Text="{Binding Status}"/>
                        <DockPanel 
                            Grid.Row="2">
                            <TextBlock
                                DockPanel.Dock="Left"
                                FontSize="10" TextWrapping="WrapWithOverflow"
                                Text="{Binding TimeAgo}" TextAlignment="Justify"/>
                            <TextBlock
                                DockPanel.Dock="Left"
                                FontSize="10" TextWrapping="Wrap"
                                Text="{Binding Source}"/>
                        </DockPanel>
                    </Grid>
                </Grid>
            </DataTemplate>

The problem is that it doesn't auto-size to the ListBox. The text gets clipped: TwitBy preview

How to fix it?

Here's the listBox XAML definition:

<ListBox 
            x:Name="tweetsListBox" 
            Margin="3,0" 
            Grid.Row="1" 
            Background="{x:Null}" Grid.IsSharedSizeScope="True"
            ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
            ItemTemplate="{DynamicResource Tweet}"/>

Any help would be appreciated.

Thanks

© Stack Overflow or respective owner

Related posts about wpf

Related posts about c#