title: Unable to bind to ios table section cells in mvvmcross, child cells bind as expected
body: <p>I'm trying to create a TableView with grouped sections like so:</p>
  
  <p><img src="https://i.stack.imgur.com/knpP0.png" alt="TableView with sections"></p>
  
  <p>I am binding a list of groups to the table. A group contains a few string properties and a list of items, while an item contains some string properties as well. The group and item cells each have their own class which extends <code>MvxTableViewCell</code>.</p>
  
  <p>Inside the class for each the cells I am binding as follows:</p>
  
  <p>The item cell:</p>
  
  <pre><code> this.DelayBind(() =&gt;
                  {
                      var set = this.CreateBindingSet&lt;ItemCellView, ItemCellViewModel&gt;();
                      set.Bind(lblOne).To(item=&gt; item.propertyOne);
                      set.Apply();
                  });
  </code></pre>
  
  <p>And the group cell:</p>
  
  <pre><code>this.DelayBind(() =&gt;
                      {
                          var set = this.CreateBindingSet&lt;GroupCellView, GroupCellViewModel&gt;();
                          set.Bind(lblOne).To(group=&gt; group.propertyOne);
                          set.Apply();
                      });
  </code></pre>
  
  <p>My TableSource in the main view extends <code>MvxStandardTableViewSource</code> and uses the overridden methods to get the respective cells for the table. <code>public override UIView GetViewForHeader</code> returns a group cell view while <code>protected override UITableViewCell GetOrCreateCellFor</code> returns an item cell view.</p>
  
  <p>My problem is that the group view cell does not bind whatsoever while the item view cell binds just fine even though I see no discernible difference between the two. The group view cell is being constructed however, it's just the binding that is not taking place inside the cell.</p>
  
  <p>Edit: Added the table view source:</p>
  
  <pre><code>private class TableSource : MvxStandardTableViewSource
          {
              private List&lt;GroupCellViewModel&gt; _groups;
              public new List&lt;GroupCellViewModel&gt; ItemsSource
              {
                  get
                  {
                      return _groups;
                  }
                  set
                  {
                      _groups = value;
                      ReloadTableData();
                  }
              }
  
              public TableSource(UITableView tableView)
                  : base(tableView)
              {
              }
  
              public override string TitleForHeader(UITableView tableView, int group)
              {
                  if (_groups == null)
                      return string.Empty;
  
                  return Utils.FormatDate(_groups[group].Date);
              }
  
              public override UIView GetViewForHeader(UITableView tableView, int group)
              {
                  return MakeHeaderRow(tableView, _groups[group]);
              }
  
              public override float GetHeightForHeader(UITableView tableView, int section)
              {
                  return 50;
              }
  
              public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
              {
                  return 50;
              }
  
              public override int NumberOfSections(UITableView tableView)
              {
                  if (_groups == null)
                      return 0;
  
                  return _groups.Count;
              }
  
              public override int RowsInSection(UITableView tableview, int group)
              {
                  if (_groups == null)
                      return 0;
  
                  return _groups[group].Items.Count;
              }
  
              protected override UITableViewCell GetOrCreateCellFor(UITableView tableView, NSIndexPath indexPath, object item)
              {
                  UITableViewCell cell;
                  if (item is Item)
                  {
                      cell = MakeItemRow(tableView, (Item)item);
                  }
                  else
                  {
                      throw new ArgumentException("Unknown cell type " + item.GetType().Name);
                  }
  
                  return cell;
              }
  
              protected override object GetItemAt(NSIndexPath indexPath)
              {
                  if (_groups == null)
                      return null;
  
                  return _groups[indexPath.Section].Items[indexPath.Row];
              }
  
              private UITableViewCell MakeHeaderRow(UITableView tableView, GroupCellViewModel group)
              {
                  var existing = (GroupCellView)tableView.DequeueReusableCell(GroupCellView.Key);
                  if (existing != null)
                      return existing;
  
                  return new GroupCellView();
              }
  
              private UITableViewCell MakeItemRow(UITableView tableView, Item item)
              {
                  var existing = (ItemCellView)tableView.DequeueReusableCell(ItemCellView.Key);
                  if (existing != null)
                      return existing;
  
                  return new ItemCellView();
              }
          }
  </code></pre>