0

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

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

酒店屏幕有一个名为 Rooms 的列表框,它绑定到一个 ObservableCollection,也名为 Rooms,其中包含 RoomViewModel 项。房间列表框有一个名为 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 包含一个名为 Guest 的 ObservableCollection,其中包含 GuestViewModel 项。RoomTemplate 包含一个名为 Guest 的列表框,它应该显示 Guest 集合中的 GuestViewModel 项。GuestTemplate 将包含几个需要绑定到 GuestViewModel 的 TextBlock。

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

4

1 回答 1

0
<ListBox ItemsSource="{Binding Guests}" ItemTemplate="{DynamicResource GuestTemplate}"/>
于 2013-07-30T19:24:51.910 回答