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

时间:2015-09-15 17:11:57

标签: c# listview windows-10 win-universal-app subitem

在C#中使用Windows 10通用应用程序时,是否有人知道将多个文本部分添加到一个listview项目的正确方法? 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);

此致 森

3 个答案:

答案 0 :(得分:2)

据说,如果您向我们提供有关您的代码的更多信息,我们可以提供更好的帮助。我在这里发布了一个Listbox示例(类似于listview),其中包含我使用的元素的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>

答案 1 :(得分:2)

最好的方法是将DataBind转换为自定义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>
    

答案 2 :(得分:0)

在我的XAML中:

 <ListView x:Name="listView">

在我的C#中:

listView.Items.Add(item);

其中Item是具有多个文本元素的对象。

如果您发布代码,我可以更具体。