2010-04-19 71 views
4

我試圖找出如何做一些類似Twitter的Silverlight應用程序,斯科特Guthrie的WPF中最近演示了一句:http://weblogs.asp.net/scottgu/archive/2010/03/18/building-a-windows-phone-7-twitter-application-using-silverlight.aspxTextBlock的包裝

不幸的是,我似乎有一個很難理解的wpf佈局系統在一些根本的方式。我一直在嘗試層次結構中不同級別的horizo​​ntalalignment/stretch,width/auto的各種組合,並且我似乎無法獲得「message」文本塊,而無需分配明確的寬度。

我只想讓文字根據窗口寬度(或任何父容器)進行換行。

<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> 

作爲後續,如果任何人都可以發送任何鏈接我的方式,可能會幫助我瞭解一些這些佈局基礎知識。我想我理解主要的佈局選項(畫布,網格,堆棧面板等),但我不明白爲什麼我不能在這種情況下得到這個文本塊。

謝謝!

回答

7

更改水平堆棧面板爲dockpanel或網格(我會使用dockpanel)。

這是公認的答案在this thread解釋 - 包裝爲dockpanels和網格是約束在兩個方向上,而不是它包裝內容在它的定位方向的StackPanel。