2014-09-08 2 views
-3

У меня есть компонент с несколькими детьми, например, сетки:WPF - получение и получение детей

<Grid> 
    <Button></Button> 
    <Button></Button> 
</Grid> 
<Grid> 
</Grid> 

Мне нужно, чтобы все дети этого компонента (в данном примере, две кнопки) в переменную, удалите их из своего отца (Grid) и вставьте их как дочерние элементы другого компонента, например, последнюю пустую сетку. Как я могу это сделать? Важно: дети могут быть любыми (кнопки, сетки, текстовые поля и т. Д.).

+0

Еще одна вещь: дети могут содержать детей, которые должны быть переданы другому отцу с той же структурой. – user3952846

+0

Я пробовал: private void myGrid_Loaded (отправитель объекта, RoutedEventArgs e) { Grid newGrid = new Grid(); UIElement child = (UIElement) VisualTreeHelper.GetChild (это, 0); this.Children.Clear(); newGrid.Children.Add (ребенок); this.Children.Add (newGrid); } Фактически, я пытаюсь создать новую сетку, которая обертывает содержимое исходной сетки. – user3952846

+1

Измените свой вопрос, а не отправляйте код в комментарии. Это просто не читаемо. – Clemens

ответ

0
while (Grid1.Children.Count > 0) 
{ 
    var element = Grid1.Children[0]; 
    Grid1.Children.Remove(element); 
    Grid2.Children.Add(element); 
} 

Если вам необходимо рассмотреть другие контейнеры, чем Grid (Decorator, ContentControl, ContentPresenter), вам придется адаптировать логику в каждом конкретном случае (Child или Content собственность вместо Children).

+0

Не обязательно только сетка, но все элементы контейнера, созданные на панели. – Clemens

+0

@Clemens Абсолютно. –

Смежные вопросы