我正在使用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项?
答案 0 :(得分:0)
<ListBox ItemsSource="{Binding Guests}" ItemTemplate="{DynamicResource GuestTemplate}"/>