2012-07-11 95 views
10

包裝我有一個StackPanel,但是下面一行:的TextBlock TextWrapping不是內部的StackPanel

<TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding Notes}" TextWrapping="Wrap" /> 

不結束語文本。

<StackPanel Orientation="Vertical"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="15" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <DockPanel Grid.Row="0" Grid.Column="0"> 
      <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Id, StringFormat='#\{0\}'}" /> 
      <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Name}" /> 
     </DockPanel> 
     <TextBlock Grid.Row="0" Grid.Column="4" FontWeight="Bold" Text="{Binding Path=Time, StringFormat={}{0:HH:mm}}" /> 
     <Image 
      Grid.Row="0" 
      Grid.Column="6" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Source="{Binding Path=Image, Mode=OneWay, Converter={StaticResource ImageConverter}}" /> 

     <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding Notes}" TextWrapping="Wrap" /> 

     <Image 
      Grid.Row="1" 
      Grid.Column="4" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Top" 
      Source="{Binding Path=Picture, Mode=OneWay, Converter={StaticResource PictureConverter}}" /> 
    </Grid> 
</StackPanel> 

StackPanel方向設置爲「垂直」,但TextBlock沒有繼承它。

我哪裏錯了?

回答

13

您的問題是使用StackPanel,允許其子女填寫所有可用空間 - StackPanel根據其內容大小延伸。嘗試刪除StackPanel並只保留Grid - 這樣您就可以將其子級大小限制爲網格使用的可用空間。

如果這還不足以滿足您構建的佈局,請嘗試在需要打包的TextBox上設置MaxWidth。

現在問題的根源在於你的TextBox被插入Grid的第一列,其大小無限(Width =「Auto」)。因此,將Grid.Column =「7」設置爲TextBox就是你想要的技巧(包裝文本)。這裏是修改後的代碼:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="5" /> 
     <ColumnDefinition Width="15" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <DockPanel Grid.Row="0" Grid.Column="0"> 
     <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Id, StringFormat='#\{0\}'}" /> 
     <TextBlock FontWeight="Bold" Padding="0,0,5,0" Text="{Binding Path=Name}" /> 
    </DockPanel> 
    <TextBlock Grid.Row="0" Grid.Column="4" FontWeight="Bold" Text="{Binding Path=Time, StringFormat={}{0:HH:mm}}" /> 
    <Image 
     Grid.Row="0" 
     Grid.Column="6" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Source="{Binding Path=Image, Mode=OneWay, Converter={StaticResource ImageConverter}}" /> 

    <TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="7" Text="{Binding Notes}" TextWrapping="Wrap" /> 

    <Image 
     Grid.Row="1" 
     Grid.Column="4" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Top" 
     Source="{Binding Path=Picture, Mode=OneWay, Converter={StaticResource PictureConverter}}" /> 
</Grid> 
+2

謝謝阿德里安,感謝您的明確解釋。 – 2012-07-11 13:40:56

相關問題