alt text http://www.freeimagehosting.net/uploads/abbcae9cd3.png
我想创建一个像图片中所示的列表框, 我只是不知道如何获得列表框中每个项目的按钮(红色关闭按钮)点击事件 任何人都可以指点我这个
的好教程由于
答案 0 :(得分:2)
像往常一样创建一个按钮,使用Click处理程序:
<Button Click="MyClickHandler">...</Button>
现在,在您的单击处理程序中,您有sender
参数,该参数将包含单击的按钮。但是,您想要按钮所属的项目。首先,您需要包含按钮的ListViewItem。有几种如何找到视觉祖先的实现,here's the first result I found.将该扩展方法添加到某个静态类。所以现在你的点击处理程序如下所示:
private void MyClickHandler(object sender, RoutedEventArgs e)
{
ListViewItem parent = ((DependencyObject)sender).TryFindParent<ListViewItem>();
}
现在您需要检索与此ListViewItem
一起使用的项目。幸运的是,这更简单(虽然我不知道它是什么,因为你的帖子没有说):
object ItemRelatedToButton = TheListBoxInQuestion.ItemContainerGenerator.ItemFromContainer(parent);
将object
替换为ListBox
实际包含的类型,以及包含实际相关名称的名称。此时,您现在可以与按钮“附加”的项目进行交互。
您可能还希望确保parent
不为空,以防万一发生了奇怪的事情,理论上您应该确保ItemRelatedToButton
也不为空。
答案 1 :(得分:0)
如果您不想编写代码,就像MVVM建议的那样,您有两种选择: 1.如果datatemplate中的控件支持ICommand,则将DataContext作为CommandParameter发送。然后该参数将传递给您的命令执行方法。 2.如果控件没有ICommand属性,则创建一个附加属性,在PropertyChangedCallback回调中,您可以将命令挂钩到您单击的事件。然后,在Xaml中,您可以将Datacontext作为CommandParameter传递。
很抱歉没有详细说明,但是如果你搜索MVVM,Command和Attached,你应该找到大量的详细信息。