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());
}