如何动态添加选择器

Posted

技术标签:

【中文标题】如何动态添加选择器【英文标题】:How to dynamically add a picker 【发布时间】:2017-02-12 18:11:12 【问题描述】:

我在屏幕上有一个按钮,当我按下按钮时,我希望一个选择器显示有一个项目列表,并且选择项目时按钮的文本应该改变,选择器应该消失。

这是我的代码:

Picker picker = new Picker
    
        Title = "What's in the slot?",
        VerticalOptions = LayoutOptions.CenterAndExpand
        //HorizontalOptions = LayoutOptions.Center 

    ;

以及按下按钮时调用的函数:

private void Displaypickerview(int row, int column)
    
        if (status == "filling board")
        
            foreach (string text in pickerText)
            
                picker.Items.Add(text);
            
            foreach (string ore in oreLevels)
            
                picker.Items.Add(ore);
            


            picker.SelectedIndexChanged += (sender, args) =>
            
                if (picker.SelectedIndex == -1)
                

                
                else
                
                    //change value of cell and button
                    Picker picker = (Picker)sender;
                    int index = picker.SelectedIndex;

                    if (index < pickerText.Length)
                    
                        board[row, column].Text = pickerText[index - 1];
                    
                    else 
                        board[row, column].Text = oreLevels[index - 1 - pickerText.Length];
                    
                
            ;
        
        else if (status == "choosing item")
        

        

    

但我不知道我应该如何在屏幕上呈现选择器视图并在之后将其删除。

更新:

下图中完成按钮的事件处理函数是什么。

【问题讨论】:

【参考方案1】:

您可以将选择器添加到您的Grid 或您正在使用的任何Panel,方法是将其添加到Children 集合中:

Grid.SetRow(picker, 0); //first row
Grid.SetColumn(picker, 0); //first column
grid.Children.Add(picker);

同样,您可以通过将其从 Children 集合中删除来删除它:

grid.Children.Remove(picker);

【讨论】:

我有一个按钮网格,所以它不会删除第一行和第一列上的按钮 Grid.SetRow/Grid.SetColumn 方法设置元素的附加 Grid.Row 和 Grid.Column 属性,即它指定元素(选择器)将位于 Grid 中的哪一行和哪一列位于。然后删除传递给 Remove 方法的项目。 按下完成按钮时应该调用remove函数但是完成按钮的代码是什么? 我已经向您展示了如何从网格中删除选择器。只需在按钮单击事件处理程序中执行此操作: button.Click += (ss, ee) => grid.Children.Remove(picker); 看来您已经设法添加了选择器?如果您有新问题,请提出新问题。

以上是关于如何动态添加选择器的主要内容,如果未能解决你的问题,请参考以下文章

如何在动态创建的行中添加日期选择器

将选择器添加到动态添加的 UIScrollView 视图上的按钮

jQuery获取后台动态添加上去的选择器

laravel 动态添加调度器

在 PHP 条目被动态调用到 DOM 之后添加 jquery 一个 href 类选择器

Bootstrap selectpicker - 如何动态添加 optgroup