.net 包装物中的物品;给定一项,如何确定';周围';项目(上、下、左、右)?

.net 包装物中的物品;给定一项,如何确定';周围';项目(上、下、左、右)?,.net,wpf,.net-4.0,.net,Wpf,.net 4.0,我已经编写了一个自定义ItemsControl,它的子项被放置在包装内。My Items控件有一个“选定项”的概念,我希望允许用户使用键盘键在四个方向中的任意一个方向更改其选择:向上、向下、向左或向右 很容易左右移动所选内容;我只是“选择”集合中的上一个(或下一个)项目。但是如果我想上下移动呢?我需要首先确定哪个项目直接存在于当前所选项目的上方或下方 WPF中是否存在可以“找出”给定控件下面或上面的元素的API?或者我需要手工计算这些东西吗?我知道wrappanel中没有api线的概念,所以如果

我已经编写了一个自定义ItemsControl,它的子项被放置在包装内。My Items控件有一个“选定项”的概念,我希望允许用户使用键盘键在四个方向中的任意一个方向更改其选择:向上、向下、向左或向右

很容易左右移动所选内容;我只是“选择”集合中的上一个(或下一个)项目。但是如果我想上下移动呢?我需要首先确定哪个项目直接存在于当前所选项目的上方或下方


WPF中是否存在可以“找出”给定控件下面或上面的元素的API?或者我需要手工计算这些东西吗?

我知道wrappanel中没有api线的概念,所以如果开箱即用,我会非常惊讶。这种行为很好,但只有当项目像在一个统一的网格中一样布置时。否则,很难确定哪一个正好位于当前项目的上方或下方(因为垂直对齐未沿项目对齐)。无论如何,如果您想实现这一点,我建议使用命中测试(查看
VisualTreeHelper
)。您只需估计当前位置左侧、右侧、上方或下方的点,然后让
visualtreeheloper
帮助您确定哪个项目位于该点。当然,应该知道项目类型(或任何类型的标识)。