获取ListView中动态膨胀时选中的复选框



我有这个列表视图:

<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的行。

我该如何做到这一点?

谢谢!

使用senderBindingContext

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
}

最新更新