0

画像と別のStackPanelを含む水平StackPanelがあります。内側のStackPanelは垂直で、2つのTextBlockがあり、どちらもTextWrappingがWrapに設定されています。ただし、テキストが広くなると、内側のStackPanelの幅が大きくなるため、TextBlockは折り返されません。外側のStackPanelは、指定されたグリッドレイアウトスペースにとどまります。内側のStackPanelを外側のStackPanelの境界内にとどまらせるにはどうすればよいですか?

XAMLの関連セクションは次のとおりです。

    <StackPanel Name="_imageAndNameStackPanel"
               Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" 
               Orientation="Horizontal"  Margin="12,12,12,0">
        <Image Name="_applicationImage" Source="{Binding Path=ImageUri}" 
               Stretch="Fill" Height="64" Width="64" HorizontalAlignment="Left"
               VerticalAlignment="Top" Margin="0,0,12,0" />
        <StackPanel Name="_nameStackPanel">
            <TextBlock Name="_nameTextBlock" Text="{Binding Path=AppName}" 
                 FontSize="24" VerticalAlignment="Top" TextWrapping="Wrap"/>
            <TextBlock Name="_subtitleTextBlock" Text="{Binding Path=Subtitle"
                 FontSize="18" VerticalAlignment="Top" Margin="0,6,0,0" 
                 TextWrapping="Wrap"/>
        </StackPanel>
    </StackPanel>
4

3 に答える 3

4

DockPanelの代わりに、おそらくより良いでしょうStackPanel

<StackPanel Name="_imageAndNameStackPanel"
           Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" 
           Orientation="Horizontal"  Margin="12,12,12,0">
    <Image Name="_applicationImage" Source="{Binding Path=ImageUri}" 
           Stretch="Fill" Height="64" Width="64" HorizontalAlignment="Left"
           VerticalAlignment="Top" Margin="0,0,12,0" />
    <DockPanel Name="_nameStackPanel">
        <TextBlock Name="_nameTextBlock" Text="{Binding Path=AppName}" 
             FontSize="24" VerticalAlignment="Top" TextWrapping="Wrap" 
             DockPanel.Dock="Top" />
        <TextBlock Name="_subtitleTextBlock" Text="{Binding Path=Subtitle"
             FontSize="18" VerticalAlignment="Top" Margin="0,6,0,0" 
             TextWrapping="Wrap" DockPanel.Dock="Top"/>
    </DockPanel>
</StackPanel>

最近、私が始めた3回のうち2回は、StackPanel最終的にに変更することになりましたDockPanel

しかし…アウターがグリッドセルの境界を超えて拡大していないことを確認しますか?と内部の両方に。が付いているものも作成StackPanelすることをお勧めします。DockPanelImageDockPanelDockPanel.Dock="Left"

于 2010-08-06T18:22:55.093 に答える
0

内側のStackPanelの幅を親StackPanelの幅にバインドできます。何かのようなもの:

{Binding RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}, Path=Width}

于 2010-08-06T18:23:11.007 に答える
-1

内側のスタックパネルまたはテキストブロックの幅を固定します。

于 2010-08-06T18:16:14.680 に答える