代码之家  ›  专栏  ›  技术社区  ›  ZombieSheep

WPF数据绑定-从重复的控制按钮触发事件

  •  1
  • ZombieSheep  · 技术社区  · 15 年前

    以下从 my question on binding in general ,我想就以下情况寻求帮助。

    我在列表框控件中通过数据模板显示了一组对象(ImageFileData)。控件绑定到ObservableCollection。集合和模板都是在我的应用程序xaml和xaml.cs文件中定义的。向集合中动态添加项可以按预期工作,并在“我的列表框”中显示新的模板化项。很好。

    我想做的一件事是通过单击在数据模板中定义的按钮从集合中移除特定项。定义按钮的单击处理程序允许我处理事件,但我不知道从何处获取与模板化按钮相关的ImageFileData对象。我的按钮事件处理程序显然将按钮作为发送者和一组RoutedEventargs传递,但我不知道如何将此数据与集合中的某个项关联起来,以便允许我删除它。

    有人能帮我吗,还是我注定要在谷歌搜索上笨拙而毫无结果,因为我不知道从哪里开始?;)

    谢谢 ZS

    2 回复  |  直到 15 年前
        1
  •  5
  •   Tim Cooper    13 年前

    用于生成项的数据将位于 Button DataContext (它是从容器继承的-a ListBoxItem 在你的情况下:

    private void ButtonClicked(object sender, EventArgs e)
    {
        var button = sender as Button;
        var imageFileData = button.DataContext as ImageFileData;
    
        ...
    }
    
        2
  •  0
  •   Nathan Arthur user2811108    7 年前

    另一种方法是沿着视觉树走到 ListBoxItem (包含在 datatemplate ) 当你拥有 列表项目 包含单击的按钮,您可以轻松获取和删除 列表项目 .

    我们找到了一个向上行走视觉树的例子。 here 在里面 GetObjectDataFromPoint here 在里面 FindAncestor .