【发布时间】:2015-01-27 08:46:39
【问题描述】:
如何编辑/修改已添加的子元素?
我有一个 grid 添加了子元素 border 设置为特定颜色。如何在不添加新子元素的情况下更改现有的border 颜色?
因为我需要动态创建这些元素,所以我使用了代码而不是 xaml。
我定义了我的网格并为其添加了一个边框,如下所示:
Dim NewNodeGrid As New Grid
Dim Bcgkgr As New SolidColorBrush
Dim MyBorder As New Border
Bcgkgr.Color = Color.FromArgb(255, 85, 57, 33)
MyBorder.BorderBrush = Brushes.Black
MyBorder.BorderThickness = New Thickness(5, 5, 5, 5)
MyBorder.Background = Bcgkgr
MyBorder.CornerRadius = New CornerRadius(15)
MyBorder.Name = "Border"
NewNodeGrid.Children.Add(MyBorder)
那么在这完成之后,是否可以访问这个子元素MyBorder并改变它的属性比如BorderBrush?
我尝试过类似:NewNodeGrid.Children.Item(0).BorderBrush = Brushes.Blue,但这不起作用。
编辑:
上面的代码会运行多次,从而创建NewNodegrid 的多个实例。我需要能够更改任何给定的单个/多个实例的边框,而不是一次全部更改。
编辑2:
一个例子来说明我想要实现的目标:
我想在运行时创建多个对象(已定义对象的新实例)。之后,我想更改任何这些对象的某些属性。
它看起来像这样:
通过使用上面的代码(类似版本),我创建了两个带边框的对象。之后,当我单击该对象时,我想更改一个对象的边框颜色。
【问题讨论】:
-
您是否尝试从代码中设置 MyBorder.BorderBrush ?
-
是的,这适用于一个元素,但我需要能够为
NewNodeGrid的多个/不同实例设置不同的画笔 -
您可以简单地将子元素转换为 Border 类型(前提是它们实际上是 Borders)。如果必须将多个 Borders 的 BorderBrush 设置为相同的颜色,可能更容易将单个 SolidColorBrush 分配给所有 Borders,然后只需更改此 SolidColorBrush 的 Color 属性。
-
我不认为这对我有用。上面的代码将运行多次,从而创建
NewNodegrid的多个实例。我需要能够更改任何给定的单个/多个实例的边框,而不是一次全部更改。抱歉含糊不清。编辑了帖子。
标签: wpf vb.net border parent-child children