【问题标题】:Manipulating canvas children C# WPF操作画布子 C# WPF
【发布时间】:2017-01-13 13:33:59
【问题描述】:

我找不到操作以编程方式添加的画布子 UI 元素的方法。这是我在画布中添加孩子的代码。我想在运行时操纵每一个画布子节点。

有没有办法做到这一点?

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);

【问题讨论】:

  • 画布画布=新画布(); UIElementCollection 集合 = 新 UIElementCollection(canvas, null); UIElement element = new UIElement() { Uid = "Camera" + index };集合.添加(元素);

标签: c# wpf canvas


【解决方案1】:

取决于你想对每个孩子做什么。假设您要将所有 Path 对象变为红色

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

或者改变所有图片的宽度:

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

或者,如果您知道特定类型的子项存在于特定索引处,您可以简单地这样做:

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

【讨论】:

  • 例如:我想更改3号画布子中的图像。如何仅为3号画布设置图像?
  • 您需要访问第三个元素并单独对其进行操作。尝试使用System.Linq 执行.ElementAt 以获取索引#2。
猜你喜欢
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多