wpf - UWP XAML 如何在绑定(bind)的 ListView 中包装文本

标签 wpf xaml listview

如何在 ListView 控件中换行或以其他方式显示长字符串。我在绑定(bind)的 ListView 控件中换行或以其他方式显示长文本均未成功。我的 xaml 页面基本上是一个带有 ItemTemplate 的 BOUND FlipView,其中包含两个绑定(bind)的文本 block 和一个绑定(bind)的 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 ;
    }
}

最佳答案

为 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>

关于wpf - UWP XAML 如何在绑定(bind)的 ListView 中包装文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663272/

相关文章:

c# - WPF:打印的 FlowDocument 上的字体不会更改

java - Android ListView : Do Not Show TextView When Null

javascript - jQuery Mobile 未设置动态 ListView 的样式

java - 如何指示 ArrayAdapter 重绘其所有元素?

c# - WPF 按钮未将 Unicode 字符居中

c# - MVVM:将 ContentControl 绑定(bind)到 CheckBox

c# - 绑定(bind)命令的正确方法

c# - 如何从具有多个路径的 svg 图像创建 appbar 按钮 PathIcon?

c# - BindingExpression 路径错误 : property not found