修改已经添加的子元素

Modifying already added child elements

如何 edit/modify 已添加的子元素?

我有一个 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 的多个实例。我需要能够更改任何给定 single/multiple 个实例的边框,而不是一次全部更改。

编辑2:

一个例子来说明我正在努力实现的目标:

我想在 运行 时创建多个对象(已定义对象的新实例)。在那之后,我想更改任何这些对象的一些 属性。

看起来像这样:

通过使用上面的代码(类似版本),我创建了两个带边框的对象。之后我想更改一个对象的边框颜色,当我点击该对象时。

仅仅因为您没有使用 XAML 就意味着您不能使用数据绑定。您可能需要参考 MSDN 上的 How to: Create a Binding in Code 页面以获得进一步的帮助,但简而言之,您可以通过编程方式设置一个 binding,就像这个例子(取自链接页面):

MyData myDataObject = new MyData(DateTime.Now);      
Binding myBinding = new Binding("MyDataProperty");
myBinding.Source = myDataObject;
myText.SetBinding(TextBlock.TextProperty, myBinding);

使用数据绑定设置,您需要做的就是更改数据绑定 属性 值以更新 UI 中的值...继续此示例:

myDataObject.MyDataProperty = "Some new value";

经过无休止的反复试验和持续搜索,我找到了适合我的解决方案。

要通过鼠标单击更改任何添加的 Grid 元素的边框颜色,mouse_down 事件如下所示:

Dim ExistingBorder = CType(sender, Grid).Children.OfType(Of Border)().FirstOrDefault()
ExistingBorder.BorderBrush = Brushes.Red

从这个 post 得到这个想法:how to get the children of an element WPF