Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
i have a listbox with a data template that contains a button.
When the button is clicked I want to get in the button
click handler the index of the listbox item that was current??
How do I do this please?
Malcolm
private void Button_Click(object sender, RoutedEventArgs e)
DependencyObject dep = (DependencyObject)e.OriginalSource;
while ((dep != null) && !(dep is ListViewItem))
dep = VisualTreeHelper.GetParent(dep);
if (dep == null)
return;
int index = lstBox.ItemContainerGenerator.IndexFromContainer(dep);
–
Hope the bellow code will help you.
private void Button_Click(object sender, RoutedEventArgs e)
var b = (Button)sender;
var grid = (Grid)b.TemplatedParent
var lstItem = (ListBoxItem)grid.TemplatedParent;
int index = lstBox.ItemContainerGenerator.IndexFromContainer(lstItem);
// rest of your code here...
And the XAML for the above assumed to be a DataTemplate on a ListBox named lstBox
:
<DataTemplate x:Key="template">
<Button Click="Button_Click" Content="Press"/>
</Grid>
</DataTemplate>
–
Probably way to late but using "IndexOf" on the listbox "Items" will give you the index #
Regards
–
Hi you can use ContentPresenter.Content
to get current item , instead of current index:
<DataTemplate DataType="{x:Type MyModel}">
<StackPanel Orientation="Horizontal" Margin="0 5">
<TextBlock Text="{Binding Title}" />
<Button Content="Active" Click="Button_Click" />
</StackPanel>
</DataTemplate>
and in code:
private void Button_Click(object sender, RoutedEventArgs e)
var button = e.Source as Button;
var contentPresenter = button.TemplatedParent as ContentPresenter;
var myModel = (MyModel)contentPresenter.Content;
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.