2011-06-16 29 views
1

我想做文本換行,並顯示一個垂直滾動條,當我有超過一行文本,但文本沒有得到包裹在所有。這是我的xaml在silverlight中的textwrapping 4不工作

<StackPanel Name="panel"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 

       <StackPanel 
        Grid.Row="0" 
        Grid.Column="0" 
        Orientation="Horizontal" 
        Background="Yellow"> 

       <TextBlock Text="Text:" /> 
       <ScrollViewer          
        BorderThickness="0" 
        Height="33"          
        VerticalScrollBarVisibility="Auto"         
        HorizontalScrollBarVisibility="Disabled">      
        <TextBlock TextWrapping="Wrap" Text="{Binding Name}"/> 
       </ScrollViewer> 
       </StackPanel> 
      </Grid> 
     </StackPanel> 

有人能告訴我爲什麼文本不會在屏幕結束時換行嗎?

感謝

回答

3

這裏發生的事情是,你內部的StackPanel(每StackPanel中)不約束其子女在StackPanel的「看得見」的空間。所以,scrollviewer感覺像有無限空間,文本塊也是如此。網格本身可以做到這一點:

<StackPanel Name="panel"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="Text:" /> 
     <ScrollViewer Grid.Column="1" 
            BorderThickness="0" 
            Height="33" 
            VerticalScrollBarVisibility="Auto" 
            HorizontalScrollBarVisibility="Disabled"> 
      <TextBlock TextWrapping="Wrap" 
            Text="YourText" /> 
     </ScrollViewer> 
    </Grid> 
</StackPanel> 
+0

現在工作得很好。現在我將不得不改變一些東西。你是否也可以告訴我是否可以以某種方式使scrollviewer與網格中的某一行保持相同的高度,以便在行中有更多文本時立即顯示滾動條?我討厭在scrollviewer中硬編碼高度。 謝謝 – user642770 2011-06-16 13:00:06

+0

當然...在我的代碼示例中,由於ScrollViewer受到網格的限制(存在隱式Gri​​d.Row =「0」),滾動查看器將被高度(是一個單詞嗎?那一排。所以,你所要做的就是'' – NestorArturo 2011-06-16 13:09:58

+0

不幸的是,沒有給出預期的結果。我像你說的那樣將高度添加到行中,並從ScrollViewer中刪除了Height屬性。然而,滾動查看器似乎仍然被網格截斷。我希望有一種附加屏幕截圖的方式,但我的意思是滾動條的底端不完全可見。我只能看到滾動條底部的一半。我希望它適當地適合行。 – user642770 2011-06-16 13:39:30

相關問題