Xamarin.forms 从Xamarin中的选择器获取选定值

Xamarin.forms 从Xamarin中的选择器获取选定值,xamarin.forms,picker,Xamarin.forms,Picker,我从web服务获取数据,并将其加载到Picker中。现在我想调用一个新的web服务来获取与所选项目相关的数据。但我没有得到所选的项目 我使用类下模型从web服务获取数据并将其加载到Picker中 public class ModelGetEmployeeList { public string ServiceStatus { get; set; } public List<EmployeeList> EmpList { get; set; } } public cl

我从web服务获取数据,并将其加载到Picker中。现在我想调用一个新的web服务来获取与所选项目相关的数据。但我没有得到所选的项目

我使用类下模型从web服务获取数据并将其加载到Picker中

public class ModelGetEmployeeList
{
    public string ServiceStatus { get; set; }
    public List<EmployeeList> EmpList { get; set; }
}

public class EmployeeList
{
    public string uid { get; set; }
    public string fname { get; set; }
    public string lname { get; set; }
}
现在我正在实现
SelectedIndexChanged
事件,如下所示:

public void PickerEmployee_SelectedIndexChanged(object sender, SelectedItemChangedEventArgs e)
{
    if (pickerEmployee.SelectedIndex == -1) 
    {
        //Message
    } 
    else
    {
        var item = sender as EmployeeList;
        var selectedItem = item.uid;

        DisplayAlert (selectedItem.ToString (), "OK", "OK");
    }
}

但是它给了我一个错误,上面的方法有错误的签名。

根据
Xamarin.Forms
SelectedIndexChanged
事件需要与
EventHandler
委托()

因此,您必须更改方法的签名:

public void PickerEmployee_SelectedIndexChanged(object sender, EventArgs e)
{
    ...
}

你的签名错了

此外,以下代码是错误的:

var item = sender as EmployeeList;
var selectedItem = item.uid;
请在下面查找更正的版本:

    public void PickerEmployee_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (pickerEmployee.SelectedIndex == -1) 
        {
            //Message
        } 
        else
        {                
            var selectedItem = PickerEmployee[SelectedIndex]; 
            DisplayAlert (selectedItem, "OK", "OK");
        }
    }
Xamarin表单选择器将只获取添加到列表中的字符串,而不获取对象

如果您需要对象,您可以使用原始lsit上的Selectedex来获取对象,如下所示:

var selectedEmp = Items.EmpList[SelectedIndex];

或者你也可以用一个

您可以使用以下命令获取所选值:

 string selectedEmployee = string.Empty; 

 selectedEmployee = pickerEmployee.Items[pickerEmployee.SelectedIndex];

Items集合是一个字符串列表,因此可以使用SelectedIndex获取当前选定的值

 var selectedValue = picker.Items [picker.SelectedIndex];
如果您使用的是绑定,那么是,公开的属性是SelectedIndex


有关详细信息,请单击

Ohh。。谢谢此问题已解决,但出现了新的错误。未在var selectedItem=item.uid处设置对象引用;谢谢你,先生。我需要从所选文本中获取uid。我用“破折号”分隔uid和员工姓名,这样我就可以在不访问对象的情况下获得uid。
public void PickerEmployee_SelectedIndexChanged(object sender, EventArgs e)
{
    if (pickerEmployee.SelectedIndex == -1) 
    {
        //Message
    } 
    else
    {                
        var selectedItem = (EmployeeList)PickerEmployee.SelectedItem; 
        DisplayAlert (selectedItem.fname, "OK", "OK");
    }
}
 var selectedValue = picker.Items [picker.SelectedIndex];
public void PickerEmployee_SelectedIndexChanged(object sender, SelectedItemChangedEventArgs e)
{
    if (pickerEmployee.SelectedIndex == -1) 
    {
        //Message
    } 
    else
    {
        var item = sender as Picker;
        var selectedItem = item.SelectedItem as EmployeeList;
        var uid =selectedItem.uid;
        DisplayAlert (uid .ToString (), "OK", "OK");
    }
}