내가 뭔가를 누락 될 수 있지만, 난 당신이 쉽게 달성 할 수 원하는 것을 생각 랩 (즉, 하나의 I이
<Canvas x:Name="canv">
<Rectangle x:Name="canvChild1"/>
<Rectangle x:Name="canvChild2"/>
<Rectangle x:Name="canvChild3"/>
<Rectangle x:Name="canvChild4"/>
</Canvas>
같은 일부 XAML 그런 다음 당신이 필요로하는 모든 안전한 인덱스를 잡아하는 것입니다이 있다고), 그래서이
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Debug.WriteLine(GetSafeElementForIndex(
this.canv.Children.IndexOf(canvChild1)).Name);
Debug.WriteLine(GetSafeElementForIndex(
this.canv.Children.IndexOf(canvChild4)).Name);
}
private FrameworkElement GetSafeElementForIndex(int currentIndex)
{
return (FrameworkElement)this.canv.Children[WrappedIndex(++currentIndex)];
}
private int WrappedIndex(int currentIndex)
{
return currentIndex % this.canv.Children.Count;
}
}
과 같은 코드를 사용할 수 있습니다, 나는 첫번째 요소에 대한 핸들을 가정하고, 다음 잡아하려면 다음 4 옆 잡고 싶어이이 인쇄 :
canvChild2
canvChild1
난 당신이 또한 시각적 트리에 대해 LINQ를 사용할 수 있도록 할 나무 물건에 콜린 Eberhardts 우수한 LINQ를 사용할 수 있다고 생각 : 당신을 수 있습니다 http://www.codeproject.com/Articles/62397/LINQ-to-Tree-A-Generic-Technique-for-Querying-Tree
꽤 편리한 물건입니다, VisualTree를 XML처럼 취급하고 다른 축을 탐색 할 수 있습니다.
아아아! 내가 $ 200에 대해 모르는 것들, Alex! 'IndexOf'! 나는 간단한 것을 놓친다는 것을 알았다. Linq 쿼리 (또는 더 나은, 확장 메서드)에서 내가 원하는 것을 정확하게 제공 할 수 있습니다. (그게 루핑 - 조회에 대한 내 필요성을 제거합니다.) 투표는 당신 (그리고 StackOverflow에 오신 것을 환영합니다!) 귀하의 점수가 빨리 올라갈 것입니다 확신합니다. – MarqueIV
한 제안 : 코드를 게시하면 제거 할 수 있습니다 'usings'를 위로하고 클래스 자체. 관련 방법 만 필요합니다. 또한 이중 빈 줄을 제거하십시오. 이러한 모든 것들은 수평 적으로나 수직적으로 불필요한 스크롤링을합니다. 그래도 훌륭한 코드 예제. 간단하고 명확! – MarqueIV