void RebuildDataRenderers() { // rebuild buttons .. InternalContent.Clear(); for (var index = 0; index < DataItems.Count; index++) { var fixedIndex = index; var item = DataItems[index]; var content = Renderer(this, item); content.Last = index == DataItems.Count - 1; content.First = index == 0; content.Selected = index == selectedButtonIndex ? SelectionState.Selected : SelectionState.Unselected; content.ActionPerformed += (s, arg) => SelectedIndex = fixedIndex; InternalContent.Add(content); } }
void RebuildDataRenderers() { if (itemsUpdating) { return; } InternalContent.Content.Clear(); for (var index = 0; index < DataItems.Count; index++) { var closureIndex = index; var item = DataItems[index]; var renderer = CreateRenderer(UIStyle, item); renderer.MouseUp += (s, e) => InternalContent.DispatchEvent(e.Derive()); renderer.MouseDown += (s, e) => InternalContent.DispatchEvent(e.Derive()); renderer.MouseDragged += (s, e) => InternalContent.DispatchEvent(e.Derive()); renderer.MouseWheel += (s, e) => InternalContent.DispatchEvent(e.Derive()); renderer.SelectionChanged += (s, a) => { SelectedIndex = closureIndex; if (a.Adjusting == false) { // the adjusting event is fired naturally already. RaiseSelectionChanged(a); } }; InternalContent.Content.Add(renderer); } // todo: This is crude .. if (SelectedItem != null) { if (!DataItems.Contains(SelectedItem)) { SelectedItem = default(T); } } }