Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表视图项中的多个文本项_C#_Listview_Windows 10_Win Universal App_Subitem - Fatal编程技术网

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

C# 列表视图项中的多个文本项,c#,listview,windows-10,win-universal-app,subitem,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; } } 你会做类似的工作吗 listCont

有人知道在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);
问候 Nathan在我的XAML中:

 <ListView x:Name="listView">
其中Item是具有多个文本元素的对象


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

正如前面所说的,如果您提供有关代码的更多信息,我们可以提供更好的帮助。我在这里发布了一个列表框的示例(类似于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>

最好的方法是将数据绑定到自定义数据模板。考虑到您已经有了
lsvTransactions
name列表视图。这是你应该做的

  • 在下面显示的.cs文件中创建
    listContent
    列表

    public class MainPage : Page
    {
        public List<listContent> ContentList {get; set;}
        .....
    
  • 使用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>
    
    
    

  • 在Universal中不支持Wrap面板,并且不支持IsSynchronizedWithCurrentItem,但我支持此:)您只需在此处删除所有不受支持的代码即可。我认为他不需要一个
    WrapPanel
    在他的情况下,一个
    StackPanel
    就可以了。即使你像这样将它添加到listView,你的
    listView
    也不知道如何显示这两个元素:)你需要定义一个数据模板来实现它。
    这一行返回了一个关于“ItemsSource”的错误={Binding}。当我将其更改为“ItemsSource=“{Binding}”时,会出现错误,但列表框中不会显示任何内容
    lsvTransactions.DataContext = ContentList;
    
    <ListView x:Name="lsvTransactions" ItemsSource={Binding}>
            <ListView.ItemTemplate>
                    <DataTemplate>
                            <StackPanel>
                                    <TextBlock Text="{Binding heading}"/>
                                    <TextBlock Text="{Binding subheading}"/>
                            </StackPanel>
                    </DataTemplate>
            </ListView.ItemTemplate>
    </ListView>