0

リストビューにあるスタックパネルでテキストブロックを垂直方向と水平方向の中央に揃えようとしていますが、テキストを中央にしか取得できず、水平方向には取得できません。さらに、テキストは折り返されていません。これが私が試したコードです:

 <ListBox Name="lstTiles" Margin="12,0,-12,0" Grid.Row="1" SelectionChanged="lstTiles_SelectionChanged">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Background="{StaticResource PhoneAccentBrush}" Width="145" Height="80" Margin="8,8,0,0" Orientation="Vertical" >
                    <TextBlock Text="{Binding Name}" Tag="{Binding ID}" Style="{StaticResource PhoneTextNormalStyle}" FontSize="15" TextWrapping="Wrap" TextAlignment="Center" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

テキストを垂直方向、水平方向、およびテキストラップにするにはどうすればよいですか?

4

1 に答える 1

0

StackPanelの向きがHorizo​​ntalに設定されているため、テキストブロックを重ねて配置するのではなく、並べて配置しているように見えます。StackPanel要素は子のサイズをとるため、これを水平方向に並べたテキストブロックのリストとして視覚化できます。各テキストブロックはその中にあるテキストのサイズをとるので、さまざまな幅のブロックが表示されます。したがって、水平方向の中央揃えは効果がありません。

マージン(苦痛)を使用して、同じ幅を実現できます。これはお勧めしません。

設定された幅のグリッドをスタックパネルに配置し、テキストブロックをグリッドに配置することもできます。テキストブロックの幅を設定して適切な効果を得ることができるかもしれませんが、現時点ではこれをテストできず、テキストが伸びるかどうかは覚えていません。

テキストの折り返しについては、テキストブロック内で話していると思いますが、それは簡単です。テキストブロックのTextWrappingプロパティをWrapに設定するだけです。

listboxitemでHorizo​​ntalContentAlignmentプロパティとVerticalContentAlignmentプロパティを設定してみてください。現在、開発用コンピューターを持っていないため、実験することはできませんが、役立つ可能性のある投稿があります:Silverlight 3:ListBoxDataTemplateHorizo​​ntalAlignment。最初の2つの答えの両方を見て、あなたの状況でどちらが最も役立つかを確認してください。もちろん、左、上、またはストレッチの代わりに中央を使用します。

于 2012-06-29T13:48:01.757 に答える