从按钮点击获取Listbox项目索引

3

我在ListboxItemTemplate中使用了一个按钮。有什么方法可以从按钮点击事件中获取Listbox项的索引?我无法获取按钮的父级。

<ListBox.ItemTemplate>
            <DataTemplate DataType="{x:Type local:Img}">
                <Button Click="lstButton_Click">...

当您单击按钮时,该项目是否已被选中? - sa_ddam213
选定的索引更改事件没有触发。 - windowsgm
你可以使用ICommand代替ClickEvent,然后将实际的项作为CommandParameter传递,或者将按钮的Tag属性设置为该项,并从事件处理程序中访问按钮的Tag属性。 - sa_ddam213
2个回答

12
     private void lstButton_Click(object sender, RoutedEventArgs e)
     {
                Button button = sender as Button;           
                int index = _myListBoxName.Items.IndexOf(button.DataContext);
//or try this
                index = _myListBoxName.ItemContainerGenerator.IndexFromContainer(button.DataContext);
     }

0
你可以在你的视图模型中添加一个 Index 属性,并在将视图模型对象添加到集合时设置它。然后你就可以在事件处理程序中访问它了。
private void lstButton_Click(object sender, RoutedEventArgs e)
    {
        Img t = (sender as Button).DataContext as Img
        //Access t.Index here
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接