ItemsControl.Items.IndexOf(UIElem)返回不同的值/确定单击了哪个项目

时间:2013-01-29 21:18:09

标签: c# wpf itemscontrol mouseclick-event

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

ItemsControl.Items.IndexOf(UIElem);

第一次运行正常,但是返回值,比如说某个位置的节点会发生变化。

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

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

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

1 个答案:

答案 0 :(得分:0)

您是否为每个椭圆指定了一个事件处理程序,例如ButtonBase.Click?如果是的话 使用处理函数的sender或e.OriginalSource属性。您还可以使用Tag属性,您可以在其中绑定您想要检索的项目椭圆或whateverer else组件。

另一个更“wpf”的解决方案是使用Ellipse.Triggers或Style.Triggers在xaml中完成它,但为了更具体,我想看看你的DataTemplate的一些xaml代码。 / p>