Обтекание TextBlock в макете WPF - PullRequest
4 голосов
/ 19 апреля 2010

Я пытаюсь понять, как сделать что-то похожее на твиттер-приложение silverlight, которое Скотт Гатри недавно продемонстрировал в WPF: http://weblogs.asp.net/scottgu/archive/2010/03/18/building-a-windows-phone-7-twitter-application-using-silverlight.aspx

К сожалению, мне, кажется, трудно понять систему компоновки wpf каким-то фундаментальным образом. Я пробовал различные комбинации горизонтального выравнивания / растяжения, ширины / авто на разных уровнях в иерархии, и я не могу заставить текстовый блок «сообщение» обернуть без назначения явной ширины.

Все, что мне нужно, - это перенос текста по ширине окна (или какому-либо родительскому контейнеру).

<Window x:Class="TweeterWin.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
    <ScrollViewer Height="auto" >
        <ListBox Name="tweetList" 
                 Height="auto"  
                 >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="132">
                        <Image Source="{Binding Avatar}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/>
                        <StackPanel >
                            <TextBlock Text="{Binding User}" TextWrapping="Wrap" Foreground="#FFC8AB14" FontSize="15" />
                            <TextBlock Text="{Binding Message}"  TextWrapping="Wrap" FontSize="10" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </ScrollViewer>
</Window>

В качестве продолжения, если кто-нибудь может отправить мне какие-либо ссылки, которые могут помочь мне понять некоторые из этих основ верстки. Мне кажется, я понимаю основные параметры макета (холст, сетка, панель стека и т. Д.), Но я не понимаю, почему я не могу заставить этот текстовый блок переноситься в этом сценарии.

Спасибо!

Ответы [ 2 ]

7 голосов
/ 19 апреля 2010

Измените горизонтальную стековую панель на док-панель или сетку (я бы использовал док-панель).

Это объясняется принятым ответом в этой теме - оборачиваемость для док-панелей и сеток ограничена в обоих направлениях, в отличие от стековой панели, которая переносит к содержимому в направлении ориентации.

0 голосов
/ 19 апреля 2010

Поскольку вы просили ссылки на учебники, попробуйте http://www.wpftutorial.net/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...