c# - Xamarin Forms ListView 数据绑定(bind)

标签 c# wpf xaml listview xamarin

我目前正在遵循本指南:

http://www.morganskinner.com/2015/01/xamarin-forms-contacts-search.html

我愿意在我的应用程序中创建一个联系人页面,就像那里的图片中显示的那样,但仍然有些地方没有按我应该的方式工作:

我编写/复制了 XAML:

    <Grid.RowDefinitions>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <SearchBar x:Name="search" Placeholder="Search"/>

    <ListView x:Name="ProvaView" Grid.Row="1" ItemsSource="{Binding FilteredContacts}" IsGroupingEnabled="true" GroupDisplayBinding="{Binding Key}" GroupShortNameBinding="{Binding Key}">
      <ListView.ItemTemplate>
        <DataTemplate>
          <TextCell Text="{Binding Name}" TextColor="Black" Detail="{Binding PhoneNumber}" DetailColor="Gray">
          </TextCell>
        </DataTemplate>
      </ListView.ItemTemplate>
    </ListView>

  </Grid>

现在我正在尝试从数据列表中“显示一些东西”,而不是动态加载的(还)。

我这样声明了一个类:

 public class Contact
    {
        public string Name { get; set; }
        public string PhoneNumber { get; set; }
    }
}

现在 xaml 背后的代码是这样的:

public partial class ContactsPage : MasterDetailPage
    {
        public List<Contact> FilteredContacts = new List<Contact>
            {
                new Contact
                {
                    Name = "Guido",
                    PhoneNumber = "3292773477"
                },
                new Contact
                {
                    Name = "Luca",
                    PhoneNumber = "3472737445"
                },
                new Contact
                {
                    Name = "Luca",
                    PhoneNumber = "3472737445"
                }
            };

        public ContactsPage()
        {
            InitializeComponent();
            ProvaView.ItemsSource = FilteredContacts;
        }
}

当我启动该应用程序时,无论如何我得到的只是一个空 ListView ,其中包含 3 个字段但其中什么也没有。

我哪里做错了?

此外,直接从我正在工作的页面来看,我无法理解与 ListView 关联的这些字段的含义:

GroupDisplayBinding="{绑定(bind)键}" GroupShortNameBinding="{绑定(bind)键}"

尽管我在网上四处寻找,但我找不到对它们的任何引用。

最佳答案

问题很可能出在您声明 FilteredContacts 的方式上,它应该是一个属性,而不是一个字段。绑定(bind)中使用的反射机制只搜索属性,不包括字段。

关于c# - Xamarin Forms ListView 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28628099/

相关文章:

wpf - 通过 VSTS 将 WPF 应用程序部署到 Hockeyapp 时出现错误 "Version could not be created from build"

c# - 如何更改 DataGridComboBoxColumn 样式?

c# - WPF 在运行时更改列宽

wpf - 如何正确忽略由 Visual Studio 调试工具为 XAML 创建的窗口

c# - 使用tocharArray()拆分汉字问题

c# - 如何在 C# 应用程序中从 C++ 调用抛出 C# 函数,以便正确展开 C++ 堆栈?

c# - 如何将 SaveAs Dialog 结果传递给 RelayCommand?

wpf - 按下箭头按钮时,列表框选择不会在列表中上下移动

c# - 如何使用约束将 T 限制为值类型?

c# - 检测 TextBox 中的 Tab 键按下