如何在windows phone开发中不定义宽度的情况下使用Textwrap 属性?

How to use Textwrap property without defining the width in windows phone development?

我正在使用单行网格。我在该行中放置了一个 LongListSelector。 ItemTemplate如下,

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition/>
    </Grid.RowDefinitions>
            <!--when we dont mention any of the height and width properties then control tries to first occupy the minimum height/width required and then it streches to the extent it is possible-->
    <phone:LongListSelector Grid.Row="0" x:Name="CLASS1">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal"  Margin="25,20" Background="#FF616464" Width="Auto">
                    <TextBlock Text="{Binding title, Mode=TwoWay}" FontSize="40" Margin="20,20" Foreground="White" TextAlignment="Left" TextWrapping="Wrap" FontStyle="Normal" FontFamily="Segoe UI"/>
                </StackPanel>
            </DataTemplate>
        </phone:LongListSelector.ItemTemplate>
    </phone:LongListSelector>
</Grid>

现在我知道,如果我们不在 XAML 文件或属性中提及 width、MaxWidth 值,上面的文本块将自行拉伸到它真正需要适合文本的宽度.如果还有更多宽度剩余,它将扩展到那个程度。但是我想包装文本块的文本。同时我想利用所有可用的宽度来拉伸 TextBlock。所以基本上我希望 Textblock 使用可用的最大宽度自行拉伸,如果其中的文本仍然更长,那么我想将它包裹起来。有什么解决方案可以实现这一目标。我可以通过为宽度设置常量值来使用文本换行。因为我想在不同的模型上部署这个应用程序,所以我可以让它通用吗?有没有办法使用parent的宽度?

您所要做的就是将 StackPanel 替换为 Grid

<DataTemplate>
    <Grid Margin="25,20" Background="#FF616464" Width="Auto">
        <TextBlock Text="{Binding title, Mode=TwoWay}" FontSize="40" Margin="20,20" Foreground="White" TextAlignment="Left" TextWrapping="Wrap" FontStyle="Normal" FontFamily="Segoe UI"/>
    </Grid>
</DataTemplate>

结果:

试试这个 属性 Horizo​​ntalContentAlignment="Stretch"