C# 如何动态添加选择器

C# 如何动态添加选择器,c#,xamarin,xamarin.forms,picker,C#,Xamarin,Xamarin.forms,Picker,我的屏幕上有一个按钮,当我按下按钮时,我希望选择器显示一个项目列表,当选择一个项目时,按钮的文本应更改为该按钮,选择器应消失 这是我的代码: Picker picker = new Picker { Title = "What's in the slot?", VerticalOptions = LayoutOptions.CenterAndExpand //HorizontalOptions = LayoutOptions.Center

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

这是我的代码:

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")
        {

        }

    }
private void Displaypickerview(int行,int列)
{
如果(状态=“填充板”)
{
foreach(pickerText中的字符串文本)
{
picker.Items.Add(文本);
}
foreach(矿层中的矿柱)
{
选择器。项目。添加(矿石);
}
picker.SelectedIndexChanged+=(发件人,参数)=>
{
if(picker.SelectedIndex==-1)
{
}
其他的
{
//更改单元格和按钮的值
选择器选择器=(选择器)发送器;
int index=picker.SelectedIndex;
如果(索引
但我不知道如何在屏幕上呈现picker视图,然后将其删除

更新:

下图中“完成”按钮的eventhandler是什么


您可以通过将选择器添加到
子集合,将其添加到您的
网格
或您正在使用的任何
面板

Grid.SetRow(picker, 0); //first row
Grid.SetColumn(picker, 0); //first column
grid.Children.Add(picker);
grid.Children.Remove(picker);
类似地,您可以通过将其从
子集合中删除来删除它:

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

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