C# 如何访问多个Xamarin中的选定参数”;“采摘者”;

C# 如何访问多个Xamarin中的选定参数”;“采摘者”;,c#,android,ios,visual-studio,xamarin,C#,Android,Ios,Visual Studio,Xamarin,我在Lucas Zhang的帮助下创建了一个自定义选择器,您可以在链接中查看它 现在我有另一个关于这个问题的问题。当用户选择一个或多个组时,我需要访问这些选定参数 public class Grup { public int ID { get; set; } public string GroupName { get; set; } public Nullable<int> SubsID { get; set; } } 公共类Grup { 公共int ID

我在Lucas Zhang的帮助下创建了一个自定义选择器,您可以在链接中查看它

现在我有另一个关于这个问题的问题。当用户选择一个或多个组时,我需要访问这些选定参数

public class Grup
{
    public int ID { get; set; }
    public string GroupName { get; set; }
    public Nullable<int> SubsID { get; set; }
}
公共类Grup
{
公共int ID{get;set;}
公共字符串组名{get;set;}
公共可为空的子项{get;set;}
}
这就是我使用的模型。选择器通过如下所示的ViewModel读取组名

public class NewUserViewModel
{
    public List<Grup> GroupList { get; set; }
    public List<Grup> SelectedGroup { get; set; }
}
公共类NewUserViewModel
{
公共列表组列表{get;set;}
公共列表SelectedGroup{get;set;}
}

我想将来自视图中每个选择器的这些参数保存到这里,并且我将通过API将它们发送到数据库。问题是,当用户选择这些ID并单击“保存”按钮时,我如何访问这些ID。

一个简单的方法是侦听选择器的选择事件,然后通过在
pickerStack上迭代

这样(基于Lucas Zhang的样本):

PickerView中:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class PickerView : ContentView
{
    public Group SelectGroup; // add the SelectGroup property which save the result after you select
    public ObservableCollection<Group> pickerSource { get; set; }

    public PickerView(ObservableCollection<Group> source) //here i change the source to your Group model
    {
        InitializeComponent();

        picker.ItemsSource = source;
    }

    private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
    {
        var stack = this.Parent as StackLayout;

        stack.Children.Remove(this);
    }

    private void picker_SelectedIndexChanged(object sender, EventArgs e)
    {
        var picker = sender as Picker;
        SelectGroup = (Group)picker.SelectedItem;    
    }
}
在您的页面中:

public partial class MutiPicker : ContentPage
{
    public MutiPicker()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        var source = new ObservableCollection<Group>() { new Group() { ID=111,GroupName="AAA",SubsID=1}, new Group() { ID = 222, GroupName = "BBB", SubsID = 2 }, new Group() { ID = 333, GroupName = "CCC", SubsID = 3 } };

        pickerStack.Children.Add(new PickerView(source));
    }

    //iterate over your pickerviews
    private void Update_Clicker(object sender, EventArgs e)
    {
        foreach (var pickerview in pickerStack.Children)
        {

            if (pickerview is PickerView && ((PickerView)pickerview).SelectGroup != null)
            {
                var selectgroup = ((PickerView)pickerview).SelectGroup;//here you will get your select group,then you could get its ID ,GroupName or SubsID 
            }

        }
    }
}
public分部类多选择器:ContentPage
{
公共选择器()
{
初始化组件();
}
已单击私有无效按钮(对象发送者,事件参数e)
{
var source=new observeCollection(){new Group(){ID=111,GroupName=“AAA”,SubsID=1},new Group(){ID=222,GroupName=“BBB”,SubsID=2},new Group(){ID=333,GroupName=“CCC”,SubsID=3};
pickerStack.Children.Add(新的PickerView(源));
}
//在pickerviews上迭代
私有无效更新\点击器(对象发送者,事件参数e)
{
foreach(pickerStack.Children中的变量pickerview)
{
if(pickerview是pickerview&((pickerview)pickerview)。SelectGroup!=null)
{
var selectgroup=((PickerView)PickerView).selectgroup;//在这里您将获得您的选择组,然后您可以获得其ID、组名或子组
}
}
}
}
public partial class MutiPicker : ContentPage
{
    public MutiPicker()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        var source = new ObservableCollection<Group>() { new Group() { ID=111,GroupName="AAA",SubsID=1}, new Group() { ID = 222, GroupName = "BBB", SubsID = 2 }, new Group() { ID = 333, GroupName = "CCC", SubsID = 3 } };

        pickerStack.Children.Add(new PickerView(source));
    }

    //iterate over your pickerviews
    private void Update_Clicker(object sender, EventArgs e)
    {
        foreach (var pickerview in pickerStack.Children)
        {

            if (pickerview is PickerView && ((PickerView)pickerview).SelectGroup != null)
            {
                var selectgroup = ((PickerView)pickerview).SelectGroup;//here you will get your select group,then you could get its ID ,GroupName or SubsID 
            }

        }
    }
}