为iOS上的ListView设置ItemSource崩溃,在Android中运行良好

时间:2017-03-23 03:27:23

标签: c# listview xamarin xamarin.ios xamarin.forms

我正在使用Xamarin表单创建一个应用,其中HomePage在主ListView内部有一个StackLayout。在我的列表中启用了分组,它在我的XAML中声明如下:

<ListView x:Name="listsListView" IsGroupingEnabled="True" GroupDisplayBinding="{Binding groupName}"  
        HasUnevenRows="True" GroupShortNameBinding="{Binding ShortName}">
  <ListView.GroupHeaderTemplate>
      <DataTemplate>
          <ViewCell>
              <Label Text="{Binding groupName}"/>
          </ViewCell>
      </DataTemplate>
  </ListView.GroupHeaderTemplate>

  <ListView.ItemTemplate>
      <DataTemplate>
          <ViewCell>
              <Label Text="{Binding itemName}"/>
          </ViewCell>
      </DataTemplate>
  </ListView.ItemTemplate>

在我后面的代码中,我设置了ListView的内容:

//ListGroup extends List<Item> and gives the name for the group header
group1 = new ListGroup("Group 1");
group2 = new ListGroup("Group 2");
//I then add a few items to my ListGroups

groupedLists = new List<ListGroup>();

groupedLists.Add(childListGroup); 
groupedLists.Add(listsListGroup); 

listsListView.ItemsSource = groupedLists;

以下是我ListGroup的实现:

public class ListGroup : List<Item>
{
    public string groupName { get; set; }
    public string ShortName { get; set; }

    public ListGroup(string Name)
    {
        this.groupName = Name;
        ShortName = "";
    }
}

我完成了代码调试,在设置ItemSource的{​​{1}}时,错误发生在最后一行。奇怪的是,一切都在Android中完美运行。但是,在iOS中,我得到:“ *因未捕获的异常而终止应用程序'NSInvalidArgumentException',原因:'* - [NSPlaceholderString initWithUTF8String:]:NULL cString'”

有谁知道为什么我在iOS上收到此错误?我已经做了一段时间的Android,但我对iOS很新。

ListView

1 个答案:

答案 0 :(得分:3)

我不确定原因,但是当我从XAML中移除GroupShortNameBinding="{Binding ShortName}"行时,它现在可以正常工作了。我想我一直在关注一个教程,并在事故中将其留在我的代码中。