如何在DataTemplate中为ItemTemplate自动调整大小到ListBox宽度?

时间:2010-04-18 08:55:03

标签: c# wpf listbox datatemplate itemtemplate

所以我对DataTemplate

有以下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>

问题是它不会自动调整ListBox的大小。文本被剪裁: TwitBy preview

如何解决?

这是listBox XAML定义:

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

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

试试这个:

 <DataTemplate x:Key="Tweet">
      <Grid Width="{Binding ElementName=tweetsListBox, Path=ActualWidth>">