Как настроить правильный стиль переноса для TextBlock? - PullRequest
0 голосов
/ 20 февраля 2012

Мне нужно иметь полный перенос текста в текстовый блок WPF.Условие состоит в том, что мы не знаем ни длины текста, ни размера окна.

XAML, который у меня есть:

<Border BorderThickness="1" CornerRadius="6" BorderBrush="#FF405DEF" Padding="5" Margin="5">
        <StackPanel Orientation="Horizontal">
            <Image  HorizontalAlignment="Left" Source="{Binding Path=User.ProfileImageUrl}"  Width="48" Height="48"
                    Name="UserAvatarImage" Stretch="Fill" VerticalAlignment="Top"  />
            <StackPanel Margin="5,0,0,5" Orientation="Vertical" Grid.Column="1"  HorizontalAlignment="Left" Name="stackPanel1" VerticalAlignment="Top" Width="413">
                <StackPanel Orientation="Horizontal" >
                    <StackPanel Orientation="Horizontal" >
                        <TextBlock Name="UserNameTextBlock"  Margin="0,0,10,0"  Text="{Binding Path=User.Name}" FontWeight="Bold">UserName</TextBlock>
                        <TextBlock   Foreground="LightGray" >@</TextBlock>
                        <TextBlock   Name="ScreenNameTextBlock"  Text="{Binding Path=User.ScreenName}" Foreground="Gray" >ScreenName</TextBlock>
                    </StackPanel>
                </StackPanel>
                <StackPanel Orientation="Horizontal"  Margin="0,5,0,0">
                    <Grid >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="2*" />
                            <ColumnDefinition Width="2*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Margin="0,0,0,0" Foreground="Blue" TextWrapping="Wrap">@ToUserName</TextBlock>
                        <StackPanel Grid.Column="1">
                            <TextBlock Margin="5,0,0,0" Text="{Binding Path=Text}" MinHeight="20"  MinWidth="200" 
                                       VerticalAlignment="Stretch" TextWrapping="WrapWithOverflow">START skf skdjf skdj hfskdjf ksdjhf ksjdhf ksjhf kjsf kjshf kjshkjfhsdf kjsfdkj hskdfj hskdjf hskdjf skjhfksjfks END</TextBlock>
                        </StackPanel>    
                    </Grid>
                </StackPanel>
            </StackPanel>
        </StackPanel>
    </Border>

Так что мне нужно это: enter image description here

Это делается по жестко заданному значению Width="300"

1 Ответ

1 голос
/ 20 февраля 2012

Я предполагаю, что это связано с вашим другим вопросом о привязке MaxWidth одного элемента управления к ActualWidth другого элемента управления

В вашей ситуации я бызамените Horizontal StackPanel на Grid, потому что Grid ограничит размер своих дочерних элементов доступным пространством, а StackPanel - нет.Таким образом, TextBlock не потребуется свойство MaxWidth, установленное для правильного переноса.

...