TextBlock在WPF布局中包装

时间:2010-04-19 00:20:58

标签: wpf layout

我正在试图弄清楚如何做一些类似于Scott Guthrie最近在WPF中演示的twitter silverlight应用程序:http://weblogs.asp.net/scottgu/archive/2010/03/18/building-a-windows-phone-7-twitter-application-using-silverlight.aspx

不幸的是,我似乎很难以某种基本方式理解wpf布局系统。我一直在尝试层次结构中不同级别的horizo​​ntalalignment / stretch,width / auto的各种组合,我似乎无法在不指定显式宽度的情况下获取“消息”文本块。

我想要的只是根据窗口的宽度(或任何父容器)来包装文本。

<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 个答案:

答案 0 :(得分:7)

将水平stackpanel更改为dockpanel或grid(我会使用dockpanel)。

这可以通过this thread中接受的答案来解释 - 在两个方向上对dockpanels和网格进行包装约束,而不是将包装到内容中的stackpanel 在它的方向上。

答案 1 :(得分:-1)

由于您要求提供教程链接,请尝试http://www.wpftutorial.net/