Это не очень хорошая идея, если вы будете придерживаться этого метода, то рано или поздно, вероятно, все станет очень грязно. При работе с элементами, которые могут быть добавлены и удалены в WPF, вы можете использовать ItemsControl
некоторого вида поверх панелей (вы можете изменить панель, используя ItemsPanel
свойство, по умолчанию это будет StackPanel
).
Создание элементов управления также можно улучшить, используя шаблоны данных и привязку данных , которые являются основными механизмами, с которыми вам следует ознакомиться.
Пример:
<ItemsControl ItemsSource="{Binding Data}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding Name}" Margin="5,5,5,0"/>
<ListBox ItemsSource="{Binding Items}" Margin="5,5,5,0" Height="200"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Здесь Data
- это исходная коллекция, которая должна реализовывать INotifyCollectionChanged
, тогда вы можете просто удалить элемент из этой коллекции, и соответствующая ему StackPanel исчезнет. Элементы в Data
должны содержать связанные свойства Name
и Items
, которым вы затем можете присваивать значения или получать введенный текст (класс должен реализовывать INPC
, подробнее об этом в статье о привязке данных ).