Xamarin.forms 从Xamarin中的选择器获取选定值
我从web服务获取数据,并将其加载到Picker中。现在我想调用一个新的web服务来获取与所选项目相关的数据。但我没有得到所选的项目 我使用类下模型从web服务获取数据并将其加载到Picker中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
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");
}
}