C# 列表视图项中的多个文本项
有人知道在C#中使用Windows 10通用应用程序时,将多段文本添加到一个listview项目的正确方法吗?Items.subitems似乎不起作用。假设我想在单个列表项中显示的两个字符串存储在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
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列表视图。这是你应该做的
listContent
列表
public class MainPage : Page
{
public List<listContent> ContentList {get; set;}
.....
<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>