如何从CS文件访问生成的XAML项目

时间:2019-10-04 12:56:27

标签: c# xaml

我有一个数据网格视图 D ,其中填充了 L 行,每个行都包含一个扩展器 E , 每行 L 是根据数据库中存在的数据创建的 每个扩展器 E 可能都来自数据库中另一个表中的几行 li

当我单击扩展器中的行 li 之一时,所选项目将是包含扩展器 E 的原始行 L 。 ,因此我无法清楚地确定我点击了 li 的那一行。 我不能在这些行上输入名称,因为它们是生成的,并且都具有相同的名称。

要删除行 li 或编辑其中的某些数据,我放置了2个小图标(上面有图片的椭圆),并有一个“ OnMouseLeftButtonUp”事件,几乎像一个“ OnClick”事件一样。 单击椭圆后,我想访问 li 行及其中的所有数据,但是我不知道该怎么做。

请原谅我,我无法发送任何代码,因为某些代码可能具有“机密”性质

What I would like to do:

2 个答案:

答案 0 :(得分:0)

通常,您可以遍历支持逻辑树以到达所需位置。例如,我有一个非常相似的示例,其中我将一个图标嵌入到捕获用户交互的数据网格中。我最终在事件处理程序中做了这样的事情:

(((sender as Image)?.DataContext as DataRecord)?.DataItem as MyViewModelForThisRecord)

因此,在无需过多详细分析您所给出的特定情况的情况下,我将在事件处理程序中添加一个断点,并查看如何浏览其公开的属性,寻找可能的方法。视图模型(我相信您也可以在文档中进行筛选,以解决此问题,但是我经常发现,仅检查发送者属性的更直接方法会更快)。

所有人都说,您需要做两件事:

  1. 数据网格的视图模型(在我的情况下,这是视图的DataContext,但我想可能总是不是真的)
  2. 要删除的记录的视图模型。通常可以通过遍历树来找到。

然后仅从用于填充数据网格的任何列表中删除项目(2)(来自视图模型1)。

答案 1 :(得分:0)

感谢您的耐心配合。
最后,我将DataGrid.selectedCell.Item属性转换为 L 行, 并使用该ligne中包含的ID在我的数据库中找到它, 然后我使用一些独特的属性来定义 li 行,以获取所需的位置。
如果我正确地描述了我的问题,解决该问题将更加简单,但是英语不是我的母语,并且我在描述问题时有些挣扎。