如何编辑/修改已添加的子元素?
我有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:
举例说明我想要实现的目标:
我想在运行时创建多个对象(已定义对象的新实例)。之后,我想要更改任何这些对象的某些属性。
看起来像这样:
通过使用上面的代码(类似版本),我创建了两个带边框的对象。之后,当我点击所述对象时,我想要更改一个对象的边框颜色。
答案 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