が、私は何かが欠けていることができ、私はあなたが簡単に達成することができた何をしたいと思います、ラップ(すなわち、1つの私は、この
<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;
}
}
のようなコードを使用することができ、私は第一の要素へのハンドルを持っていると仮定して、次のつかみたい、その後、第四と次つかむことを望んでいるこれは、この印刷されます。
canvChild2
私はあなたにも、あなたがビジュアルツリーに対してLINQを使用することができるようになる木のもの、にコリンEberhardts優れたLINQを使用することができると思いcanvChild1
:http://www.codeproject.com/Articles/62397/LINQ-to-Tree-A-Generic-Technique-for-Querying-Tree
かなり便利なものです、あなたが可能にXMLと同じようにVisualTreeを扱い、異なる軸をナビゲートします。
Aaaah!私が200ドルで知りませんでした、アレックス! 「IndexOf」!私は何かが簡単でないことを知っていた。私はそれを私が望むものを正確に与えるためにLinqのクエリ(あるいはそれ以上の拡張メソッド)で使うことができます。 (これはループルックアップの必要性を排除します。)投票はあなたのものです(... StackOverflowへようこそ!あなたの得点はすぐに上がると思います) – MarqueIV
提案:コードを投稿すると、 「使用している」という言葉とクラスそのもの。関連する方法だけが必要です。また、二重空白行を削除してみてください。それらのすべては、水平方向と垂直方向の両方で不必要なスクロールを行います。それでも、素晴らしいコード例。シンプルでクリア! – MarqueIV