@LiptonOlolo

Ellipse и TextBlock, как правильно сделать ширину TextBlock'a с TextWrapping?

Доброго времени суток.
Есть ListBox с ItemTemplate:
<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        
        <ListBox Name="Test" Grid.Column="1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="5">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="40"/> <!-- Avatar -->
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>

                        <Grid.RowDefinitions>
                            <RowDefinition Height="20"/> <!-- Name -->
                            <RowDefinition Height="Auto"/> <!-- Text -->
                            <RowDefinition Height="Auto"/> <!-- Time -->
                        </Grid.RowDefinitions>

                        <Ellipse Grid.RowSpan="2" Height="40" Width="40" VerticalAlignment="Bottom">
                            <Ellipse.Fill>
                                <ImageBrush ImageSource="{Binding UserAvatar}"/>
                            </Ellipse.Fill>
                        </Ellipse>
                        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding UserName}"/>
                        <TextBlock TextWrapping="Wrap" Grid.Row="1" Grid.Column="1" Text="{Binding MessageText}"/>
                        <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Time}"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

Но с таким раскладом ширина TextBlock'a становится неограниченной и текст просто улазит вправо и появляется скролл:
MAj0RL1I4yKLKm.png
Но, если добавить принудительно ширину TextBlock'y, например 200, то все становится так, как мне и нужно:
Vrwop7qsOqYXqr.png

Вопрос, как сделать подгонку этого TextBlock'a автоматической, чтобы текст врапался, а ползунка не было?

Заранее - спасибо.

(p.s. - биндинг к ширине области, в которой находится TextBlock не сработает, из-за того, что есть КАРТИНКА (40х40))
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C#
Поставьте в ColumnDefinition вместо Auto значение 1*.
Также запретите листбоксу иметь горизонтальную прокрутку:
<ListBox Name="Test" Grid.Column="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
 ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы