ItemsControl.Items.IndexOf(UIElem) 返回不同的值/计算出点击了哪个项目

本文关键字:出点 计算 项目 IndexOf Items UIElem 返回 ItemsControl | 更新日期: 2023-09-27 17:56:29

我有一个省略号(节点)列表,其中包含归因于每个节点的各种数据。我将环中的省略号添加到 ItemsControl 上。我添加它们的顺序是我想要保留的顺序,因为我使用它来找出我单击了哪个节点:

ItemsControl.Items.IndexOf(UIElem);

它第一次工作正常,但是返回的值例如,特定位置的节点发生了变化。

我想我的问题是 ItemsControl 是否保留我添加元素的顺序?有没有更简单的方法来计算我点击了哪个椭圆?我刚刚使用了以下内容:

Ellipse UIElem = (Ellipse)VisualTreeHelper.HitTest(ItemsControl, e.GetPosition(ItemsControl)).VisualHit)

我想做的只是让工具提示显示节点的名称。

ItemsControl.Items.IndexOf(UIElem) 返回不同的值/计算出点击了哪个项目

是否为每个椭圆指定一个事件处理程序,例如 ButtonBase.Click?如果是,那么使用处理程序函数的 sender 或 e.OriginalSource 属性。还可以使用 Tag 属性,在该属性中可以绑定项椭圆或尝试检索的任何其他组件。

另一个更"wpf"的解决方案是使用 Ellipse.Triggers 或 Style.Triggers 在 xaml 中执行此操作,但为了更具体,我想看一下一些 xaml 代码 - 特别是您的 DataTemplate。