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);
     }
 }
Exemple #2
0
        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);
                }
            }
        }