按下按钮事件后显示选择器

时间:2017-12-05 15:30:46

标签: c# xamarin cross-platform

大家好,我正在开发一个跨平台应用程序,允许用户先从list.view然后从选择器中选择。列表视图工作正常,现在我正在选择拾取器,但我遇到了问题。

我似乎实现了“picker.SelectedIndexChanged + =(sender,args)=>”用于处理列表中新元素的选择,但我在此问题上与发件人有关。错误是“错误CS0136无法在此范围内声明名为'sender'的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数。”

据我所知,这个错误与func本身的even handler参数中的参数sender有关,但由于我没有声明一个新的变量发送者,这怎么会引发错误?下面是代码(现在只是一个模拟。这是基本实现,但选择器的内容将根据列表视图中选择的内容而改变。)

private void Button_Pressed(object sender, EventArgs e)
    {
        Picker picker = new Picker
        {
            Title = "Select SubUnit",
            VerticalOptions = LayoutOptions.Center
        };

       string[] list = new string[] { "1", "2", "3", "4", "5" } ;


        foreach(string subunit in list)
        {
            picker.Items.Add(subunit);
        }

        picker.Focus();

        picker.SelectedIndexChanged += (sender, args) =>
        {
            if (picker.SelectedIndex == -1)
            {
              //ToDo. Prob unnecessary to handle.
            }
            else
            {
                string selectedSub = picker.Items[picker.SelectedIndex];
            }
        };

    }

我希望选择器成为焦点并允许用户在按下按钮后选择一个元素。任何想法?

现在,唯一的错误是我在发送方对象上遇到的语法错误,从技术上讲,选择器没有引起关注,但我确信一旦我将其编译就可以解决这个错误。

1 个答案:

答案 0 :(得分:1)

您已在当前范围内使用sender

private void Button_Pressed(object sender, EventArgs e)

您需要将sender的其他实例重命名为唯一的

picker.SelectedIndexChanged += (s, args) =>