2012-07-11 32 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が、無限のサイズ(Width = "Auto")を持つGridの最初の列に挿入されたこともあります。したがって、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

ありがとうございました。 –

関連する問題