如何在通用Windows平台(Windows 10应用程序)中使用ListView

如何在通用Windows平台(Windows 10应用程序)中使用ListView,listview,templates,windows-phone-7,windows-phone-8,uwp,Listview,Templates,Windows Phone 7,Windows Phone 8,Uwp,谁能解释一下ItemTemplate.DataTemplate和ListView。在这个代码片段中。 我真的不理解模板的概念,如果有人也能解释一下,那将是非常有帮助的。 我曾考虑过这个问题: 但还是很困惑。 非常感谢。 :( ListView是一个控件,允许您动态显示项目列表,以便用户可以滚动查看该项目列表并找到他们可能需要的任何内容。在XAML中定义它非常简单: 现在,假设你有一个大学生名单,每个学生都有一个简单的学生班级 公共班级学生 { 公共字符串名称{get;set;} 公共整数{

谁能解释一下
ItemTemplate.DataTemplate
ListView
。在这个代码片段中。 我真的不理解
模板的概念,如果有人也能解释一下,那将是非常有帮助的。
我曾考虑过这个问题:

但还是很困惑。 非常感谢。 :(


ListView是一个控件,允许您动态显示项目列表,以便用户可以滚动查看该项目列表并找到他们可能需要的任何内容。在XAML中定义它非常简单:


现在,假设你有一个大学生名单,每个学生都有一个简单的学生班级

公共班级学生
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
可能有几十个、数百个或数千个学生,因此您无法静态定义UI。您通常会将这些学生保留在某种类型的列表/集合中,并将其隐藏在代码中。您可以从各种来源获取他们-数据库、web服务或硬编码,就像我现在为演示目的所做的那样:

private List of student=new List();
公共主页()
{
this.InitializeComponent();
添加(新学生{Name=“John”,年龄=20});
Add(新学生{Name=“Bob”,年龄=21});
添加(新学生{Name=“Steve”,年龄=19});
添加(新学生{Name=“Marko”,年龄=18});
添加(新学生{Name=“Igor”,年龄=20});
添加(新学生{Name=“Ivan”,年龄=20});
添加(新学生{Name=“Nina”,年龄=21});
添加(新学生{Name=“Paul”,年龄=20});
添加(新学生{Name=“Ana”,年龄=23});
添加(新学生{Name=“Ivana”,年龄=20});
StudentsList.ItemsSource=学生列表;
}
该列表/集合用作ListView的项目源,因此您可以设置ListView的
ItemsSource
属性来连接两者并在UI中显示列表。使用ListView,所有项目都会动态呈现,而不管项目的数量如何

如果我们现在运行应用程序,它会非常难看:

您需要定义一个
DataTemplate
使其更漂亮。因为每个学生都有自己的姓名和年龄,所以您需要使用这些属性使其看起来更漂亮。此
DataTemplate
被分配给
ListView。ItemTemplate
属性和ListView将对列表中的每个项目使用它


请看,我使用DataTemplate定义了要显示的属性以及如何呈现它们-我使用了字体大小、字体颜色、边距等。我承认这并不是很漂亮,但我相信你会明白这一点:

您还会注意到,我使用了如下绑定构造:


这基本上意味着:检查对象是否具有属性
Name
,如果有,则将其呈现为
TextBlock.Text

请注意,事情可能会变得更复杂,因此您可以对一个列表中的不同项目使用不同的模板等,但我认为这不在问题范围之内


TLDR:
ListView
动态呈现项目列表。
ItemsSource
定义该列表视图的项目源
ListView
DataTemplate
定义将用于呈现某个内容的模板。此
DataTemplate
被分配给
ListView
ItemTemplate
属性,因此在
列表视图中
知道它应该完全使用该模板来呈现其项目。

太棒了!谢谢分配。名称“MenuItem”在命名空间“using SoundDemo.Model”中不存在.这是我经常遇到的一个非常正常的错误,在这里我也理解这个错误,如果我重新命名并尝试重新爱上冲突,我仍然无法解决问题。[对这部分有什么建议吗?]ListView应该是可滚动的,这在默认情况下不是很不幸。非常好,简单的例子。我用UserControls做了相同的操作,性能令人震惊!非常好的总结帮助我理解ListView和ListView的样式。thx
<ListView Margin="10" Name="lvDataBinding">
     <ListView.ItemTemplate>
           <DataTemplate>
                <WrapPanel>
                    <TextBlock Text="Name: " />
                    <TextBlock Text="{Binding Name}" FontWeight="Bold" />
                    <TextBlock Text=", " />
                    <TextBlock Text="Age: " />
                    <TextBlock Text="{Binding Age}" FontWeight="Bold" />
                    <TextBlock Text=" (" />
                    <TextBlock Text="{Binding Mail}" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
                    <TextBlock Text=")" />
                    </WrapPanel>
            </DataTemplate>
     </ListView.ItemTemplate>
</ListView>