private View CreateView(HeaderedItem next) { var h = next.Header; View view; if (h != null) { view = HeaderTemplate?.CreateContent() as View ?? new Label { }; view.BindingContext = h; return(view); } view = ItemTemplate?.CreateContent() as View ?? new Label { }; view.BindingContext = next.Item; SetItemModel(view, next); return(view); }
private List <HeaderedItem> GenerateItems(IEnumerable source) { var items = new List <HeaderedItem>(); var s = (source as IList) ?? (new List <object>(source.Cast <object>())); if (IsGroupingEnabled) { int index = 0; // enumerate and create group.... foreach (var gitem in s) { var g = new HeaderedItem { Header = gitem, Index = index++ }; items.Add(g); foreach (var item in (IEnumerable)gitem) { items.Add(new HeaderedItem { Item = item, Index = index++ }); } } } else { for (var i = 0; i < s.Count; i++) { var item = s[i]; items.Add(new HeaderedItem { Item = item, Index = i }); } } return(items); }
null);//OnItemHeaderChanged); /*private static void OnItemHeaderChanged(BindableObject bindable, object oldValue, object newValue) * { * * }*/ /// <summary> /// Set ItemHeader for bindable object /// </summary> /// <param name="bindable"></param> /// <param name="newValue"></param> private static void SetItemModel(BindableObject bindable, HeaderedItem newValue) { bindable.SetValue(ItemModelProperty, newValue); }