1

我有一个ListBox带有这个模板的。

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="Template">
        <StackPanel Margin="0,10">
            <Border BorderBrush="Black" BorderThickness="1" Background="#FFFFC000" Width="460" MinHeight="76">
                <StackPanel Margin="4,4,-4,-153">
                    <TextBlock  Text="{Binding }" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Black" TextWrapping="Wrap"/>
                    <TextBlock " Text="{Binding Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Black" TextWrapping="Wrap"/>
                </StackPanel>
            </Border>
        </StackPanel>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

然而,我必须强制设置 a Width,否则它会变成“ 2”。HeightBorderWidthHeight

就像它不明白我TextBlock里面有 2 个并且不会扩展以填充它们。

这让我不得不在我不喜欢的地方设置一个固定的高度和宽度,就好像文本太大它会被截断一样。

4

1 回答 1

0

你可以扔掉你StackPanel的 's 因为你不需要它们,它们也是让你的包装无法工作的原因,你需要一个像 a 这样的面板Grid。否定Margin的 's 也不是你通常会在 a DataTemplatefor a中看到的东西,ListBox所以我猜你在树上其他地方的那种练习中还有一些其他时髦的布局东西。

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="Template">
         <Grid Margin="0,10">
            <Border BorderBrush="Black" BorderThickness="1" Background="#FFFFC000"/>
            <TextBlock TextWrapping="Wrap" 
                       HorizontalAlignment="Center" Margin="4,4,-4,-153"> 
                 <Run Text="{Binding }"/><LineBreak/>
                 <Run Text="{Binding Mode=OneWay}"/>
            </TextBlock>
         </Grid>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

因此,除非我在某处遗漏了某些东西,否则这应该可以解决您的问题,因为Grid它将为您处理其子代的大小并消耗其父代所需的空间。但是,如果您的结构中有其他东西在推动东西并且不会让它消耗该空间,它应该调用您的 Wrapping。

希望这可以帮助 :)

于 2013-10-25T21:29:01.303 回答