列表视图项中的多个文本项

Multiple text items in List view item

有人知道在 C# 中使用 Windows 10 个通用应用程序时将多段文本添加到一个列表视图项的正确方法吗? Items.subitems 好像不行。假设我想在单个列表项中显示的两个字符串存储在...

    public class listContent
    {
        public string heading { get; set; }
        public string subHeading { get; set; }
    }

是否可以做类似的工作?

listContent listItem = new listContent();
listItem.heading = "HEADING";
listItem.subHeading = "subheading";
lsvTransactions.Items.Add(listItem);

问候 内森

在我的 XAML:

 <ListView x:Name="listView">

在我的 C# 中:

listView.Items.Add(item);

其中 Item 是一个包含多个文本元素的对象。

如果你post代码我可以更具体。

正如所说,如果您向我们提供有关代码的更多信息,我们可以提供更好的帮助。我 post 你这里有一个列表框示例(类似于列表视图),其中包含我使用的元素的 ItemTemplate 定义以及如何将项目绑定到列表框以及如何将项目中的字段绑定到元素放入列表框。

    <ListBox Grid.Row="0" Grid.Column="0" ItemsSource="{Binding Path=MeasureUnits, Mode=OneWay}"
              SelectedItem="{Binding Path=SelectedMeasureUnit, Mode=TwoWay}"
            SelectionMode="Single" Margin="0" 
              IsSynchronizedWithCurrentItem="True" >
        <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <WrapPanel>
                            <TextBlock Text="{Binding Path=ID}" Style="{StaticResource idStyle}" />
                            <TextBlock Text="{Binding Path=Description}" Style="{StaticResource desStyle}"/>
                        </WrapPanel>
                        <WrapPanel>
                            <TextBlock Text="{Binding Path=DestinationUnitsInSource}" Style="{StaticResource numStyle}" />
                            <TextBlock Text="{Binding Path=SourceUnitsInDestination}" Style="{StaticResource numStyle}" />
                        </WrapPanel>
                    </StackPanel>
                </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

最好的方法是将数据绑定到自定义 DataTemplate。考虑到您已经拥有 lsvTransactions 名称 ListView。这是你应该做的。

  1. 在如下所示的 .cs 文件中创建 listContent 的列表

    public class MainPage : Page
    {
        public List<listContent> ContentList {get; set;}
        .....
    
  2. 像上面那样在代码中向 ContentList 添加项目。

  3. 添加项目后添加以下行以指向数据源。

    lsvTransactions.DataContext = ContentList;
    
  4. 使用 DataTemplate 创建如下所示的 ListView

    <ListView x:Name="lsvTransactions" ItemsSource={Binding}>
            <ListView.ItemTemplate>
                    <DataTemplate>
                            <StackPanel>
                                    <TextBlock Text="{Binding heading}"/>
                                    <TextBlock Text="{Binding subheading}"/>
                            </StackPanel>
                    </DataTemplate>
            </ListView.ItemTemplate>
    </ListView>