1

根据我关于一般绑定的问题,我想就以下情况寻求帮助。

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

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

任何人都可以帮我解决这个问题,还是因为我不知道从哪里开始,所以我注定要在谷歌搜索中进行尴尬而毫无结果的搜索?;)

谢谢ZS

4

2 回答 2

5

用于生成项目的数据将位于Button's中DataContext(它从容器继承 -ListBoxItem在您的情况下为 a ):

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

    ...
}
于 2009-02-20T15:46:58.627 回答
0

另一种方法是将可视化树向上移动到 a ListBoxItem(包含您在 中定义的所有元素datatemplate)。当您拥有ListBoxItem包含单击的按钮时,您可以轻松获取和删除ListBoxItem.

此处GetObjectDataFromPoint此处可找到向上遍历视觉树的示例FindAncestor

于 2009-03-06T13:45:27.897 回答