修改已添加的子元素

时间:2015-01-27 08:46:39

标签: wpf vb.net border parent-child children

如何编辑/修改已添加的子元素?

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

EDIT2:

举例说明我想要实现的目标:

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

看起来像这样:
example
通过使用上面的代码(类似版本),我创建了两个带边框的对象。之后,当我点击所述对象时,我想要更改一个对象的边框颜色。

2 个答案:

答案 0 :(得分:0)

仅仅因为您没有使用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";

答案 1 :(得分:0)

经过一系列的反复试验和持续搜索后,我找到了一个适合我的解决方案。

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

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

从这篇文章中得到了这个想法:how to get the children of an element WPF