我有一个Customer对象,它有一个Orders列表。现在,使用MVVM模式,我显示了CustomerOrderViewModel和“CustomerOrderView”一部分的客户列表。客户使用如下实现的列表框来显示:MVVM WPF创建子元素
<ListBox BorderThickness="0" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Path=Customers}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<view:CustomerView />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在我还需要显示订单,但我需要在列表框外显示它。就像这样:
<StackPanel Grid.Column="1" Grid.Row="0" Margin="10">
<ItemsControl ItemsSource="{Binding Path=Orders}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
这不起作用,因为没有为订单上CustomerOrderViewModel没有财产。订单是Customer对象上的一个集合。我怎样才能实现它?
这里是更新的例子:
<ListBox BorderThickness="0" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding Path=Customers}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<view:CustomerView />
<StackPanel Margin="20">
<ItemsControl ItemsSource="{Binding Path=Orders}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<view:OrderView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我不想显示该订单的所有客户。我只想显示当前选定客户的订单。
我更新了这篇文章。我担心的一件事是,为什么我必须使用ContentControl,为什么我不能使用简单的控件来显示所有信息。 – azamsharp 2009-07-10 17:53:35