我有这个列表视图:
<ListView x:Name="listview_brouch" HasUnevenRows="true" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Label
Grid.Column="0"
Padding="0,10,0,10"
FontSize="16"
HorizontalOptions="Start"
VerticalOptions="Start"
FontFamily="ButtonFont"
Text="{Binding title}"
TextColor="Black"
/>
<CheckBox
CheckedChanged="CheckBox_CheckedChanged"
VerticalOptions="Center"
HorizontalOptions="Center"
Grid.Column="1"
Color="Aqua"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它由一个标签和一个复选框组成。我给出的列表视图数据如下:
private void FillLists()
{
List<SubCategories> brouch = new List<SubCategories>();
foreach (var e in subCategories)
{
if(e.IDfromCategories == categories[0].mainCategoryID)
brouch.Add(e);
}
listview_brouch.ItemsSource = brouch;
}
现在列表被brouch
中的项目数量夸大了
我现在也膨胀了与brouch
中的项目一样多的复选框
现在我可以像在复选框中添加事件处理程序一样。
但是,每个复选框都是相同的。我需要知道对应对象brouch
中的哪个项目勾选了复选框。
假设brouch
中有三个项目
项目名称1ITENNAME 2ITENNAME 3
当我选中复选框3时,我需要知道这是来自列表视图中也包括ITEMNAME 3的行。
我该如何做到这一点?
谢谢!
使用sender
的BindingContext
protected void CheckBox_CheckedChanged(object sender, EventArgs args)
{
var check = (Checkbox)sender;
var item = (SubCategories)check.BindingContext;
// then item contains the object for the given row
}