c# Wpf Как получить Item из Listbox'а через кнопку?

Есть ListBox, который берет ItemSource из вьюмодели. В ItemTemplate есть 2 кнопки, проблема в том, что при нажатии на кнопки выделенный item не меняется.

<ListBox.ItemTemplate>
    <DataTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.3*"/> <!--Text-->
                <ColumnDefinition Width="15"/> <!--Splitter-->

                <ColumnDefinition Width="*"/> <!--Time-->

                <ColumnDefinition Width="25"/> <!--Done-->
                <ColumnDefinition Width="25"/> <!--Edit-->
            </Grid.ColumnDefinitions>

            <TextBox Text="{Binding Text, Mode=TwoWay}" HorizontalAlignment="Left" MinWidth="45" />
            <TextBox Text="{Binding Time, Mode=TwoWay}" HorizontalAlignment="Left" MinWidth="20" MaxWidth="40" Grid.Column="2" />

            <Button Grid.Column="3" Content="✓" Click="OnCompleteBtnClick"/>
            <Button Grid.Column="4" Content="..." />
        </Grid>
    </DataTemplate>
</ListBox.ItemTemplate>

Как получить Item из селектора с помощью кнопки из ItemTemplate, если Item не выделен?


Ответы (1 шт):

Автор решения: original_name

Я нашел метод IndexOf в ListBox.Items, он возвращает индекс конкретного элемента.

    private void OnCompleteBtnClick(object sender, RoutedEventArgs e)
    {
        var item = (sender as FrameworkElement).DataContext;
        int index = data_el.Items.IndexOf(item);

        MessageBox.Show(index.ToString());
    }
→ Ссылка