在我的 MainWindow 中,我有一个绑定到POCO 对象ListBox
的who:ItemsSource
ObservableCollection
Layout
<ListBox x:Name="ListBox" ItemsSource="{Binding Layouts}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
此外,在 MainWindow 中,我们使用UserControl
(LayoutUserControl) 定义 Layout 对象的可视化表示:
<DataTemplate DataType="{x:Type local:Layout}">
<local:LayoutUserControl />
</DataTemplate>
当我们将对象添加到 Layouts 集合时,我们会看到新的 LayoutUserControls 填充了 ListBox。这很简单。
现在,我想做的是以某种方式从 MainWindow 与各个 LayoutUserControls 进行通信。具体来说,从 MainWindow,我想在每个 LayoutUserControls 上调用一个方法...如果我尝试遍历 ListBox 的 Items 集合,我得到的只是对 Layout 对象的引用,而不是 LayoutUserControls。由于 LayoutUserControls 是在 DataTemplate 中定义的,因此我没有命名引用来访问它们...
是否有 WPF 构造支持这种从父控件到子控件的交互?RoutedEvents 是我的第一个想法,但它们只支持子到父(气泡)通信。也许命令是要走的路?
任何帮助,将不胜感激。
谢谢!