Windows Phone ListView 绑定

Windows Phone ListView Binding

我正在尝试创建项目的 ListView 并能够删除它们。这是我的代码。我无法获取要显示的项目列表。我没有找到绑定 ListViews 的简单示例,因此我可以理解确切的概念。你能告诉我我做错了什么吗?

PS。 myListOfItems 是一个包含字符串的列表。该项目是 WP 8.1 WinRT。

    public class MedClass
    {
        public string medName { get; set; }
    }

    public class MedClassRoot
    {
        public List<MedClass> medNames { get; set; }
    }

    public sealed partial class MedSavedPage : Page
    {
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            MedClassRoot root = new MedClassRoot();
            root.medNames = new List<MedClass>();

            foreach (var element in myListOfItems)
            {
                root.medNames.Add(new MedClass {medName = element});
            }

            MedSaved_ListView.DataContext = root;
            //MedSaved_ListView.ItemsSource = root;
        }

    <ListView DataContext="{Binding root}"
              x:Name="MedSaved_ListView" 
              HorizontalAlignment="Left" 
              Height="507" 
              Margin="10,73,0,0" 
              VerticalAlignment="Top" 
              Width="380" Tapped="MedSaved_ListView_Tapped">

        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Height="30">
                    <TextBlock Text="{Binding medName}" FontSize="16"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

这是让它工作的最快方法:

  • 暂时从 ListView 中删除 DataContext 部分。

  • 只需将 ItemsSource 设置为您的项目列表(注释掉 MedSaved_ListView.DataContext = root 的部分,取消注释并更改下一行)

    MedSaved_ListView.ItemsSource = root.medNames;
    

说明 - ListView ItemsSource 是用于生成 ItemsControl 内容的集合。您需要将其设置为某种 IEnumerable。您的 medNames 是实现 IEnumerable 的 List 类型,因此您需要为其设置 ItemsSource。