WPF DataBinding - 来自重复控制按钮的火灾事件

WPF DataBinding - 来自重复控制按钮的火灾事件

问题描述:

my question on binding in general开始,我想请求以下方案的帮助。WPF DataBinding - 来自重复控制按钮的火灾事件

我有一个对象集合(imageFileData)通过ListBox控件中的DataTemplate显示。该控件绑定到ObservableCollection。集合和模板都在我的应用程序xaml和xaml.cs文件中定义。动态添加项目到集合按预期工作,并在我的列表框中显示一个新的模板项目。好。

我希望能够做的事情之一是通过单击DataTemplate中定义的按钮从集合中删除特定的项目。定义按钮的Click处理程序允许我处理事件,但我不知道在哪里获取与模板化按钮相关的imageFileData对象。我的按钮的事件处理程序显然将按钮作为发件人和一组RoutedEventArgs传递,但我无法弄清楚如何将这些数据与集合中的某个项目关联起来,以便将其删除。

任何人都可以帮助我,或者我注定要尴尬和无果的谷歌搜索,因为我不知道从哪里开始? )

由于 ZS

用于生成项目将在数据中的ButtonDataContext(它从容器继承 - 你的情况一ListBoxItem):

private void ButtonClicked(object sender, EventArgs e) 
{ 
    var button = sender as Button; 
    var imageFileData = button.DataContext as ImageFileData; 

    ... 
} 
+0

肯特,你是一位明星 - 从一个周末为我节省了一段时间,想知道如何找到答案。谢谢。 – ZombieSheep 2009-02-20 16:01:57

另一种方法是将可视化树扩大到ListBoxItem(包含您在datatemplate中定义的所有元素)。 当您的ListBoxItem包含点击按钮时,您可以轻松获取并删除ListBoxItem的数据。

发现向上走向视觉树的示例hereGetObjectDataFromPointhereFindAncestor中。