2015-01-27 2 views
0

Как редактировать/изменять дочерние элементы, которые уже были добавлены?Изменение уже добавленных дочерних элементов

У меня есть 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, но это не работает.

Edit:

Код выше будет запускать несколько раз, создавая тем самым несколько экземпляров NewNodegrid. Мне нужно изменить границу любого отдельного/множественного экземпляра, но не сразу.

Edit2:

пример, чтобы проиллюстрировать то, что я пытаюсь достичь:

Я хочу создать несколько объектов (новые экземпляры определенного объекта) во время выполнения. И после этого я хочу изменить какое-либо свойство любого из этих объектов.

Это будет выглядеть следующим образом:
example
Используя код выше (подобный вариант), я создаю два объекта с границами. После этого я хочу изменить цвет рамки одного объекта, когда я нажимаю на указанный объект.

+0

вы пытались установить MyBorder.BorderBrush из кода? – stsur

+0

Да, это работает для одного элемента, но мне нужно иметь возможность устанавливать разные кисти для нескольких/разных экземпляров «NewNodeGrid». –

+0

. Вы можете просто нарисовать дочерние элементы для ввода границы (при условии, что они фактически являются границами). Если вам нужно установить BorderBrush из нескольких границ в один цвет, может быть проще назначить одну SolidColorBrush для всех границ, а затем просто изменить свойство Color этого SolidColorBrush. – Clemens

ответ

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

0

Просто потому, что вы не используете XAML. не означает, что вы не можете использовать привязку данных. Вы можете обратиться к How to: Create a Binding in Code страницу на MSDN для получения дополнительной помощи, но в общем, вы можете программно настроить binding как в этом примере (взято из связанной страницы):

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

с привязкой настройки данных, все вам нужно сделать, это изменить связанные данные значения свойства для обновления значения в пользовательском интерфейсе ... Продолжит с этим примером:

myDataObject.MyDataProperty = "Some new value"; 
+0

Не знаете, как реализовать это для нескольких объектов экземпляра. Должен ли я создать общедоступное свойство для указанного объекта и попытаться связать его с каким-то внутренним контролем ('BorderBrush')? –

+0

Что вы подразумеваете под * несколькими экземплярами объектов *? – Sheridan

+0

Мне нужно было бы создать несколько объектов (новые экземпляры определенного объекта) во время выполнения. И после этого мне нужно было бы изменить какое-либо свойство любого из этих объектов. Например: http://i.imgur.com/j4I71sP.png Используя код выше (аналогичная версия), я создаю два объекта с границами. После этого я хочу изменить цвет рамки одного объекта, когда я нажимаю на указанный объект. –