我有以下对象结构: AllProducts对象是ProductGroups对象的ObsCol,ProductGroup是LineItems的ObsCol,LineItems对象是LineItem对象的ObsCol
这就是我在嵌套列表框中的方式。
ProductGroup 1
| LineItem 1 |
| LineItem 2 |
| LineItem 3 |
ProductGroup 2
| LineItem1 |
| LineItem 2 |
| LineItem 3 |
| LineItem 4 |
这是我的ListBox:
<ItemsControl x:Name="lstProductGroups" ItemsSource="{Binding}" ItemTemplate="{StaticResource ProductListItem}">
</ItemsControl>
和DataTemplates:
<DataTemplate x:Key="LineItemsTemplate">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImageUrl}" Height="50" Width="50" />
<StackPanel Orientation="Vertical" Width="350">
<TextBlock HorizontalAlignment="Left" TextWrapping="NoWrap" Text="{Binding Name}"/>
<TextBlock TextWrapping="Wrap" Text="{Binding Description}" HorizontalAlignment="Left"/>
</StackPanel>
<TextBlock TextWrapping="Wrap" Text="{Binding Price}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="ProductListItem">
<StackPanel x:Name="GridDataHolder">
<TextBlock TextWrapping="Wrap" FontWeight="Bold" Text="{Binding GroupName}" VerticalAlignment="Top" d:LayoutOverrides="Width"/>
<ListBox x:Name="lstLineItems" ItemsSource="{Binding LineItems}" Width="500" ItemTemplate="{StaticResource LineItemsTemplate}" SelectionMode="{Binding IsListType, Converter={StaticResource BoolToSelectionModeConverter}}" ItemContainerStyle="{StaticResource LineItemsStyle}">
</ListBox>
</StackPanel>
</DataTemplate>
我想要完成的是能够在每个列表框中选择项目,并将所选项目绑定到我的VM中名为“SelectedCartItems”的LineItem的ObsCol。有什么想法吗?
答案 0 :(得分:0)
使用Model-View-ViewModel模式(MVVM)将ProductGroup实例包装在公开SelectedItem属性的ViewModel中,然后在ListBox中绑定它。在ViewModel中进行选择后,您可以随心所欲地做任何事情!