Кем вы хотели быть в этих StackPanels?Панели используются для расстановки предметов.Если вы хотите показать коллекцию элементов, вы, вероятно, захотите использовать ItemsControl (или один из множества типов ItemsControls).Элемент ItemsControl очень мощный - вы можете указать, как отображаются элементы, а также как отображается панель, на которой они отображаются.Вы даже можете указать, что панель является StackPanel.Например,
<ItemsControl ItemsSource="{Binding ElementName=root, Path=List1}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!-- Template defines the panel -->
<StackPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- Template defines each item -->
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Затем вы хотите привязать список элементов, что очень просто с ItemsControl!В вашем случае с пользовательским элементом управления вы можете указать свойства зависимостей для самого элемента управления в выделенном фрагменте кода, а затем связать их со свойствами из XAML.Например, вы можете создать свойства зависимости для различных списков, которые у вас есть, например:
public static readonly DependencyProperty List1Property = DependencyProperty.Register(
"List1",
typeof(IList<string>),
typeof(MyControl));
public static readonly DependencyProperty List2Property = DependencyProperty.Register(
"List2",
typeof(IList<string>),
typeof(MyControl));
Затем вы можете связать свойство ItemsSource ваших ItemsControls:
<ItemsControl ItemsPanel="..." ItemsSource="{Binding ElementName=root, Path=List1}" />
<ItemsControl ItemsPanel="..." ItemsSource="{Binding ElementName=root, Path=List2}" />
(в данном случаеЯ предполагаю, что пользовательский элемент управления имеет топор: Name = "root")
Надеюсь, это поможет!