protected override void OnElementChanged(ElementChangedEventArgs <MultiLevelListView> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                SetNativeControl(new UITableView
                {
                    BackgroundColor     = UIColor.FromRGB(243, 239, 236),
                    RowHeight           = 100,
                    AutoresizingMask    = UIViewAutoresizing.All,
                    SeparatorStyle      = UITableViewCellSeparatorStyle.None,
                    Bounces             = true,
                    BouncesZoom         = true,
                    ScrollEnabled       = true,
                    SectionFooterHeight = 0,
                    SectionHeaderHeight = 70,
                    TableHeaderView     = new UIView(new CGRect(0, 0, 100, 70)),
                    ContentInset        = new UIEdgeInsets(-70, 0, 0, 0)
                });
            }
            if (e.NewElement != null)
            {
                var dataSource = new ExpandableListDataSource(e.NewElement);
                Control.Source = dataSource;
            }
        }
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (e.PropertyName == MultiLevelListView.ItemsProperty.PropertyName)
            {
                var dataSource = new ExpandableListDataSource(Element, this);
                Control.Source = dataSource;
                Control.ReloadData();
                SetNeedsDisplay();
            }

            if (e.PropertyName == MultiLevelListView.ChildSelectedCommandProperty.PropertyName)
            {
                var eventArgs = e as ExpandableListViewEventArgs;
                var dataItem  = Element.Items[eventArgs.GroupPosition].ChildItems[eventArgs.ChildPosition];
                Element.ChildSelectedCommand?.Execute(dataItem);
            }
        }