我从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; }
}
这是我在Picker
中加载数据的方式:
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync ();
var Items = JsonConvert.DeserializeObject <ModelGetEmployeeList> (content);
foreach(EmployeeList emp in Items.EmpList)
{
pickerEmployee.Items.Add(emp.uid.ToString()+"-"+emp.fname.ToString()+" "+emp.lname.ToString());
}
}
现在我正在实施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");
}
}
但它给我一个错误,上面的方法有错误的签名。
答案 0 :(得分:2)
根据Xamarin.Forms
Picker documentation SelectedIndexChanged
事件,期待与EventHandler
委托人匹配的委托(EventHandler documentation)
因此,您必须更改方法的签名:
public void PickerEmployee_SelectedIndexChanged(object sender, EventArgs e)
{
...
}
答案 1 :(得分:1)
你的签名错了。
以下代码也是错误的:
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上的selectedIdex来获取对象:
var selectedEmp = Items.EmpList[SelectedIndex];
或者您可以使用Bindable Picker。
答案 2 :(得分:1)
您可以使用以下选项获取所选值:
string selectedEmployee = string.Empty;
selectedEmployee = pickerEmployee.Items[pickerEmployee.SelectedIndex];
答案 3 :(得分:0)
setup.py
答案 4 :(得分:0)
Items集合是一个字符串列表,因此您可以使用SelectedIndex
获取当前选定的值 var selectedValue = picker.Items [picker.SelectedIndex];
如果您正在使用绑定,则yes,exposed属性是SelectedIndex。
有关详情,请点击here
答案 5 :(得分:0)
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");
}
}