WFP将ViewModel绑定到嵌套在另一个列表框中的列表框,两个列表框都使用DataTemplates

时间:2013-07-30 19:23:29

标签: c# wpf binding datatemplate

我正在使用WPF 4.0和Caliburn Micro在C#中开发应用程序。我需要将ViewModel绑定到列表框,列表框是DataTemplate中的控件之一。这个DataTemplate在外部列表框中用作ItemTemplate并且......不,我想这不是很清楚。

让我试着用一个带有几个房间的酒店的例子来解释我需要做什么,每个房间都有几个客人。

酒店屏幕有一个名为Rooms的列表框,它被绑定到一个ObservableCollection,也叫做包含RoomViewModel项目的Rooms。 Rooms列表框有一个名为RoomTemplate的ItemTemplate,如下所示:

<ListBox x:Name="Rooms" ItemTemplate="{DynamicResource RoomTemplate}"/>

使用RoomTemplate看起来像这样(高度简化):

<DataTemplate x:Key="RoomTemplate">
    <DockPanel VerticalAlignment="Top">
        <TextBlock x:Name="RoomDescription" Text="{Binding Path=RoomDescr}" />
        <ListBox x:Name="Guests" ItemTemplate="{DynamicResource GuestTemplate}"/>
    </DockPanel>
</DataTemplate>

RoomViewModel包含名为Guests的ObservableCollection,其中包含GuestViewModel项。 RoomTemplate包含一个名为Guests的列表框,它应显示Guests集合中的GuestViewModel项。 GuestTemplate将包含几个需要绑定到GuestViewModels的TextBlock。

列表框房间到集合房间的第一个绑定由CM的约定活页夹处理,并且工作得很好。我的问题是GuestTemplate中listbox Guest的第二个绑定。如何将其绑定到Rooms集合中包含的RoomViewModels中的Guest项?

1 个答案:

答案 0 :(得分:0)

<ListBox ItemsSource="{Binding Guests}" ItemTemplate="{DynamicResource GuestTemplate}"/>