Получите, какой флажок внутри 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>

Он состоит из метки и флажка. Я даю данные 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 есть три элемента.

ПУНКТ 1 ИМЯ 2 ИМЯ 3

И когда я устанавливаю флажок 3, мне нужно знать, что это исходило из строки в списке, которая также включала ITEMNAME 3.

Как мне этого добиться?

Спасибо!


person inno    schedule 04.11.2020    source источник


Ответы (1)


используйте BindingContext из sender

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
}
person Jason    schedule 04.11.2020