Xamarin,ListView,如何从ListView中的复选框中获取值?
我有一个带有标签和复选框的列表视图 我想实现一个按钮列表器,它将从我的ListView中获取所有选中的项目 这是ListViewXamarin,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"
正如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
}
}
}
}