コード例 #1
0
        public void ShowDropDown <T>(string panelTemplate, int height, IEnumerable <T> options, Func <T, ScrollItemWidget, ScrollItemWidget> setupItem)
        {
            var substitutions = new Dictionary <string, int>()
            {
                { "DROPDOWN_WIDTH", Bounds.Width }
            };
            var panel = (ScrollPanelWidget)Widget.LoadWidget(panelTemplate, null, new WidgetArgs()
            {
                { "substitutions", substitutions }
            });

            var itemTemplate = panel.GetWidget <ScrollItemWidget>("TEMPLATE");

            panel.RemoveChildren();
            foreach (var option in options)
            {
                var o = option;

                ScrollItemWidget item = setupItem(o, itemTemplate);
                var onClick           = item.OnClick;
                item.OnClick = () => { onClick(); RemovePanel(); };

                panel.AddChild(item);
            }

            panel.Bounds.Height = Math.Min(height, panel.ContentHeight);
            AttachPanel(panel);
        }