Xaml 如何在栅格视图中换行文字

Xaml 如何在栅格视图中换行文字,xaml,uwp,uwp-xaml,Xaml,Uwp,Uwp Xaml,我正在制作一个图书馆管理软件 我有以下xaml: <GridView ItemsSource="{x:Bind Path=ViewModel.Books, Mode=OneWay}"> <GridView.ItemTemplate> <DataTemplate x:DataType="data:Book"> <StackPanel Margin="5" HorizontalAlig

我正在制作一个图书馆管理软件

我有以下xaml:

<GridView ItemsSource="{x:Bind Path=ViewModel.Books, Mode=OneWay}">
        <GridView.ItemTemplate>
            <DataTemplate x:DataType="data:Book">

                <StackPanel Margin="5" HorizontalAlignment="Center">

                    <Image Width="200" Height="200" Source="{x:Bind Path=CoverImageLocation, Mode=OneWay}" /> 

                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                        <StackPanel>
                            <TextBlock FontSize="16" Text="{x:Bind Path=Title, Mode=OneWay}" 
                                       TextWrapping="WrapWholeWords"/>
                            <TextBlock FontSize="10" Text="{x:Bind Path=Author, Mode=OneWay}" 
                                       Margin="0, 3, 0, 0" TextWrapping="WrapWholeWords"/>
                        </StackPanel>

                        <TextBlock FontSize="20" Text="{x:Bind Path=Quantity, Mode=OneWay}"
                                   VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
                    </StackPanel>
                </StackPanel>

            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

文本块中的文本是从数据库中获取的。我觉得实施细节不是必需的。文本块分别表示书的标题、作者和数量

我有一本书名叫《不给小费的微妙艺术》。正如您可能已经注意到的,TextWrapping设置为WrapHoleWords。但这是该应用程序的屏幕截图:

有两件事需要注意:

  • 文本没有包装
  • 数量少了
  • 如何指定要包装的文本块?或者,如果不可能,至少在长文本的末尾显示省略号,这样数量就不会减少

  • 使用Grid而不是StackPanel使用TextTriming属性获得适当的文本修剪

    <DataTemplate x:DataType="data:Book">
        <StackPanel Margin="5" HorizontalAlignment="Center">
            <Image Width="200" Height="200" Source="{x:Bind Path=CoverImageLocation, Mode=OneWay}" /> 
            <Grid HorizontalAlignment="Stretch">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <StackPanel>
                    <TextBlock FontSize="16" Text="{x:Bind Path=Title, Mode=OneWay}" 
                              TextTrimming="CharacterEllipsis"/>
                    <TextBlock FontSize="10" Text="{x:Bind Path=Author, Mode=OneWay}" 
                               Margin="0, 3, 0, 0" TextWrapping="WrapWholeWords"/>
                </StackPanel>
                <TextBlock FontSize="20" Text="{x:Bind Path=Quantity, Mode=OneWay}"
                           Grid.Column="1" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
            </Grid>
        </StackPanel>
    </DataTemplate>
    
    
    

  • 文本修剪工作完全符合我的要求。只需删除第一个TextBlock中的TextWrap属性。否则就不行了