2017-01-13 5 views
-1

プログラムで追加されたキャンバスの子要素のUI要素を操作する方法が見つかりません。これはキャンバスに子を追加するためのコードです。実行時にこれらのキャンバスのすべての子を操作します。キャンバスキャンバスの子C#WPF

これを行う方法はありますか?

 Canvas = new Canvas(); 
     canvas.Width = mapArea.ActualWidth; 
     canvas.Height = mapArea.ActualHeight; 
     mapArea.Children.Add(new UIElement() { Uid = "Camera" + index }); 

     Image imageB = new Image(); 
     { 
      imageB.Width = 60; 
      imageB.Source = camera; 
     } 

     mapArea.Children.Add(imageB); 
     Canvas.SetTop(imageB, PosX); 
     Canvas.SetLeft(imageB, PosY); 
+0

キャンバスキャンバス=新しいキャンバス(); UIElementCollectionコレクション=新しいUIElementCollection(canvas、null); UIElement要素=新しいUIElement(){Uid = "カメラ" +インデックス}; collection.Add(element); – jdweng

答えて

0

それぞれの子供にしたいことによって異なります。

foreach (var c in canvas.Children.OfType<Image>()) 
{ 
    c.Width= 10; 
} 

それとも、特定のタイプの子が特定のインデックス位置にあることがわかっている場合は次のことができます。あなたはすべてのパスは、すべての画像の赤

foreach (var c in canvas.Children.OfType<Path>()) 
{ 
    c.Stroke = Brushes.Red; 
} 

または変更幅をオブジェクト変えたいと言います単に行う:

var child = (Image)canvas.Children.ElementAt(3) ; 
+0

例:Canvas Child No.3の画像を変更したいCanvas No.3の画像のみを設定できますか? –

+1

3番目の要素にアクセスし、それを単独で操作する必要があります。 'System.Linq'を使って' .ElementAt'を実行してインデックス#2を取得してみてください。 – Carson

関連する問題