В моем главном окне у меня есть ListBox
, ItemsSource
которого связан с ObservableCollection
из Layout
объектов POCO:
<ListBox x:Name="ListBox" ItemsSource="{Binding Layouts}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Кроме того, в MainWindow мы определяем визуальное представление объекта Layout с помощью UserControl
(LayoutUserControl):
<DataTemplate DataType="{x:Type local:Layout}">
<local:LayoutUserControl />
</DataTemplate>
Когда мы добавляем объекты в коллекцию Layouts, мы видим, что новые LayoutUserControls заполняют ListBox. Это довольно просто.
Теперь то, что я хотел бы сделать, это каким-то образом связаться с MainWindow с отдельными LayoutUserControls. В частности, из MainWindow я хочу вызвать по одному методу для каждого из LayoutUserControls ... Если я попытаюсь перебрать коллекцию Items ListBox, все, что я получу, это ссылка на объекты Layout, а не LayoutUserControls. Поскольку LayoutUserControls определены в DataTemplate, у меня нет именованной ссылки для доступа к ним ...
Существует ли конструкция WPF, которая поддерживает этот тип взаимодействия родительских элементов управления с дочерними? RoutedEvents были моей первой мыслью, но они поддерживают только дочерние (пузырьковые) связи. Возможно, команды - это путь?
Любая помощь будет оценена.
Спасибо!