Xamarin,ListView,如何从ListView中的复选框中获取值?

Xamarin,ListView,如何从ListView中的复选框中获取值?,listview,checkbox,xamarin.forms,Listview,Checkbox,Xamarin.forms,我有一个带有标签和复选框的列表视图 我想实现一个按钮列表器,它将从我的ListView中获取所有选中的项目 这是ListView 正如Jason所说,您将checkbox的IsChecked属性绑定到一个属性,然后您可以foreach OCParticipantsTable来获取checkbox的IsChecked属性为true的所有项目 <ListView x:Name="dsfdf" HasUnevenRows="True"

我有一个带有标签和复选框的列表视图

我想实现一个按钮列表器,它将从我的ListView中获取所有选中的项目

这是ListView


正如Jason所说,您将checkbox的IsChecked属性绑定到一个属性,然后您可以foreach OCParticipantsTable来获取checkbox的IsChecked属性为true的所有项目

 <ListView
            x:Name="dsfdf"
            HasUnevenRows="True"
            ItemsSource="{Binding OCParticipantsTable}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding name}" />
                            <CheckBox IsChecked="{Binding ischecked}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Button
            x:Name="btn1"
            Clicked="Btn1_Clicked"
            Text="getdata" />
ViewModelBase实现InotifyProperty已更改:

public class ViewModelBase : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
 public partial class Page15 : ContentPage
{
   public ObservableCollection<ParticipantsTable> OCParticipantsTable { get; set; }
    public Page15()
    {
        InitializeComponent();

        OCParticipantsTable = new ObservableCollection<ParticipantsTable>()
        {
            new ParticipantsTable(){name="cherry",ischecked=false },
             new ParticipantsTable(){name="barry",ischecked=true },
              new ParticipantsTable(){name="annine",ischecked=false },
               new ParticipantsTable(){name="wendy",ischecked=false },
               new ParticipantsTable(){name="leo",ischecked=true },
               new ParticipantsTable(){name="alex",ischecked=false }
        };
        this.BindingContext = this;
    }

    private void Btn1_Clicked(object sender, EventArgs e)
    {
        foreach(var pt in OCParticipantsTable)
        {
            if(pt.ischecked)
            {
                //do something you want to do
            }
        }
    }
}
公共类ViewModelBase:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
public void RaisePropertyChanged(字符串propertyName)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(处理程序!=null)
{
处理程序(这是新的PropertyChangedEventArgs(propertyName));
}
}
}
公共部分类第15页:内容页
{
公共ObservableCollection OCParticipantsTable{get;set;}
公共页15()
{
初始化组件();
OCParticipantsTable=新的ObservableCollection()
{
new ParticipantsTable(){name=“cherry”,ischecked=false},
new ParticipantsTable(){name=“barry”,ischecked=true},
new ParticipantsTable(){name=“annine”,ischecked=false},
new ParticipantsTable(){name=“wendy”,ischecked=false},
new ParticipantsTable(){name=“leo”,ischecked=true},
new ParticipantsTable(){name=“alex”,ischecked=false}
};
this.BindingContext=this;
}
私有无效Btn1_已单击(对象发送方,事件参数e)
{
foreach(OCParticipantsTable中的var pt)
{
如果(检查零件)
{
//做你想做的事
}
}
}
}

正如Jason所说,您将checkbox的IsChecked属性绑定到一个属性,然后您可以foreach OCParticipantsTable来获取checkbox的IsChecked属性为true的所有项目

 <ListView
            x:Name="dsfdf"
            HasUnevenRows="True"
            ItemsSource="{Binding OCParticipantsTable}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="{Binding name}" />
                            <CheckBox IsChecked="{Binding ischecked}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

        <Button
            x:Name="btn1"
            Clicked="Btn1_Clicked"
            Text="getdata" />
ViewModelBase实现InotifyProperty已更改:

public class ViewModelBase : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
 public partial class Page15 : ContentPage
{
   public ObservableCollection<ParticipantsTable> OCParticipantsTable { get; set; }
    public Page15()
    {
        InitializeComponent();

        OCParticipantsTable = new ObservableCollection<ParticipantsTable>()
        {
            new ParticipantsTable(){name="cherry",ischecked=false },
             new ParticipantsTable(){name="barry",ischecked=true },
              new ParticipantsTable(){name="annine",ischecked=false },
               new ParticipantsTable(){name="wendy",ischecked=false },
               new ParticipantsTable(){name="leo",ischecked=true },
               new ParticipantsTable(){name="alex",ischecked=false }
        };
        this.BindingContext = this;
    }

    private void Btn1_Clicked(object sender, EventArgs e)
    {
        foreach(var pt in OCParticipantsTable)
        {
            if(pt.ischecked)
            {
                //do something you want to do
            }
        }
    }
}
公共类ViewModelBase:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
public void RaisePropertyChanged(字符串propertyName)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(处理程序!=null)
{
处理程序(这是新的PropertyChangedEventArgs(propertyName));
}
}
}
公共部分类第15页:内容页
{
公共ObservableCollection OCParticipantsTable{get;set;}
公共页15()
{
初始化组件();
OCParticipantsTable=新的ObservableCollection()
{
new ParticipantsTable(){name=“cherry”,ischecked=false},
new ParticipantsTable(){name=“barry”,ischecked=true},
new ParticipantsTable(){name=“annine”,ischecked=false},
new ParticipantsTable(){name=“wendy”,ischecked=false},
new ParticipantsTable(){name=“leo”,ischecked=true},
new ParticipantsTable(){name=“alex”,ischecked=false}
};
this.BindingContext=this;
}
私有无效Btn1_已单击(对象发送方,事件参数e)
{
foreach(OCParticipantsTable中的var pt)
{
如果(检查零件)
{
//做你想做的事
}
}
}
}

使用绑定。将复选框绑定到VM中的某个属性,然后只需选中该属性即可获取所选项目。请使用绑定。将复选框绑定到VM中的某个属性,然后只需选中该属性即可获取所选项目。
 public class ParticipantsTable:ViewModelBase
{
    public string name { get; set; }
    private bool _ischecked;
    public bool ischecked
    {
        get { return _ischecked; }
        set
        {
            _ischecked = value;
            RaisePropertyChanged("ischecked");
        }
    }
}
public class ViewModelBase : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
 public partial class Page15 : ContentPage
{
   public ObservableCollection<ParticipantsTable> OCParticipantsTable { get; set; }
    public Page15()
    {
        InitializeComponent();

        OCParticipantsTable = new ObservableCollection<ParticipantsTable>()
        {
            new ParticipantsTable(){name="cherry",ischecked=false },
             new ParticipantsTable(){name="barry",ischecked=true },
              new ParticipantsTable(){name="annine",ischecked=false },
               new ParticipantsTable(){name="wendy",ischecked=false },
               new ParticipantsTable(){name="leo",ischecked=true },
               new ParticipantsTable(){name="alex",ischecked=false }
        };
        this.BindingContext = this;
    }

    private void Btn1_Clicked(object sender, EventArgs e)
    {
        foreach(var pt in OCParticipantsTable)
        {
            if(pt.ischecked)
            {
                //do something you want to do
            }
        }
    }
}