UWP XAML如何在绑定的ListView中换行文本

3
我如何在我的 ListView 控件中换行或以其他方式显示长字符串。我一直无法在绑定的 ListView 控件中换行或以其他方式显示长文本。我的 XAML 页面基本上是一个带有 ItemTemplate 的 BOUND FlipView,其中包含两个绑定的 TextBlock 和一个绑定的 ListView。我可以使 TextBlocks 换行,但无法使 ListViewItems 换行。这似乎是一个简单的事情,但它却困扰着我。
这是我的 XAML 代码的一部分:
<Page.Resources>
    <DataTemplate x:DataType="data:MydataObject" x:Key="MydataObjectTemplate">
        <StackPanel HorizontalAlignment="Stretch" Height="596" Width="982">
            <TextBlock Name="txtDataObjectId" Text="{Binding dataObject.Id}" Visibility="Collapsed" TextWrapping="WrapWholeWords"/>
            <TextBlock FontSize="24" Text="{x:Bind dataObject}" HorizontalAlignment="Center" TextWrapping="WrapWholeWords"/>
            <ListView ItemsSource ="{x:Bind theObjectDetails, Mode=OneWay }" 
                      HorizontalAlignment="Stretch"  
                      BorderBrush="Black" 
                      BorderThickness="1"/>
        </StackPanel>
    </DataTemplate>
</Page.Resources>

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel HorizontalAlignment="Stretch">
        <ComboBox x:Name="cboCategory" Header="Category" SelectionChanged="cboCategory_SelectionChanged" />
        <FlipView x:Name="FlipView1" 
              ItemsSource="{x:Bind MydataObjects, Mode=OneWay }" 
              ItemTemplate="{StaticResource MydataObjectTemplate}"
              BorderBrush="Black" 
              BorderThickness="1"/>
    </StackPanel>
</Grid>

//c#
public class mydataObject
{
    public int Id { get; set; }
    public dataObject theObject { get; set; }
    public List<dataObjectDetails> theObjectDetails { get; set; }

    public override string ToString()
    {
        return this.theObject.Subject;
    }
}

public class dataObjectDetails
{
    public int Id { get; set; }
    public int dodId{ get; set; }
    public string bodyText { get; set; }

    public override string ToString()
    {
        return bodyText ;
    }
}

我应该指出Windows 10 UWP ListView,因为这可能会有所不同... - Mark Johnson
1
你在将仅文本字符串传递到ListView中作为项吗?还是像Button之类的对象?如果只是字符串,您可以始终使用绑定到Content的TextBlock指定listview ItemTemplate并实现目标。 - Chris W.
我开始理解我的困难了。我正在将ListView绑定到一个对象,该对象具有覆盖ToString的功能,以发送出现在listview中的文本。因此,FlipView绑定到List<MydataObject>,而ListView绑定到... - Mark Johnson
看了你刚刚添加的代码,你将ListView.ItemsSource绑定到了类名"dataObjectDetails",而不是属性"theObjectDetails"。你在ListView中看到了预期的项吗? - 15ee8f99-57ff-4f92-890c-b56153
我已经纠正了上面的例子。看来我在为发布这里而制作通用代码时有些粗心。 - Mark Johnson
我认为我的答案应该是有效的。如果有效,请在旁边点击复选标记。如果无效,请告诉我您看到了什么。 - 15ee8f99-57ff-4f92-890c-b56153
1个回答

1
给ListView添加一个ItemTemplate,将内容放在一个TextBlock中,使文本自动换行:
<ListView
    ItemsSource="{x:Bind theObjectDetails, Mode=OneWay}"
    HorizontalAlignment="Stretch"
    >
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock 
                    Text="{Binding bodyText}"
                    TextWrapping="WrapWholeWords"
                    />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

这个答案是解决方案。一开始绑定让我有些困惑,因为Text属性需要绑定到底层的dataObjectDetails BodyText,或者简单地绑定到bodyText。 - Mark Johnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接